逼近函数为:y(k)=u(k)^3 +
y(k-1)/(1+y(k-1)^2),
其中u(k)=0.5sin(6pit),网络结构为“2-5-25-1”
clear all;
close all;
xite=0.20;
alfa=0.05;
b=5*ones(5,1);%初始化高斯隶属度函数宽度
c=[-5 -2 0 2 5;%初始化高斯隶属度函数中心
-5 -2 0 2 5; ];
w=rands(25,1);%初始化模糊推理层到输出层的权值
%***********************初始化************************
c_1=c;
c_2=c_1;
b_1=b;
b_2=b_1;
w_1=w;
w_2=w_1;
u_1=0.0;
y_1=0.0;
%***********************初始化************************
ts=0.001;%采样周期
for k=1:1:1000
time(k)=k*ts;
u(k)=0.5*sin(6*pi*k*ts);%输入层第一个输入
y(k)=u_1^3+y_1/(1+y_1^2);%输入层第二个输入
x=[u(k),y_1]';%输入层的两个输入
f1=x;%第1层——输入层输出
for i=1:1:2
for j=1:1:5
net2(i,j)=-(f1(i)-c(i,j))^2/b(j)^2;
f2(i,j)=exp(net2(i,j));%第2层——模糊化层输出
end
end
for j=1:1:5
m1(j)=f2(1,j);%输入u(k)的隶属度
m2(j)=f2(2,j);%输入y(k)的隶属度
end
for i=1:1:5
for j=1:1:5
ff3(i,j)=m2(i)*m1(j);%第3层——模糊推理层的输出,即模糊关系R,该层共5*5=25个节点,采用笛卡尔乘积法取代马达尼取小运算
end
end
f3=[ff3(1,:),ff3(2,:),ff3(3,:),ff3(4,:),ff3(5,:)];%将模糊关系矩阵写成行向量形式
f4=w_1'*f3';%第4层——输出层的输出
ym(k)=f4;
e(k)=y(k)-ym(k);%误差
d_w=0*w_1;%Δw初始化
for j=1:1:25
d_w(j)=xite*e(k)*f3(j);%计算Δw的值
end
w=w_1+d_w+alfa*(w_1-w_2);%计算权值W
delta2=-e(k)*w'*f3';%计算σ
d_b=0*b_1;%Δb初始化
for j=1:1:5
d_b(j)=xite*delta2*2*(x(1)-c(1,j))^2*(b(j)^-3);%通过σ计算Δb
end
b=b_1+d_b+alfa*(b_1-b_2);%计算b
d_c=0*c_1;%Δc初始化
for i=1:1:2
for j=1:1:5
d_c(i,j)=-xite*delta2*2*(x(i)-c(i,j))*b(j)^-2;%计算Δc
end
end
c=c_1+d_c+alfa*(c_1-c_2);%计算c
%**************更新***********************
u_1=u(k);
y_1=y(k);
w_2=w_1;
w_1=w;
c_2=c_1;
c_1=c;
b_2=b_1;
b_1=b;
%**************更新***********************
end
%******************绘图*************************
figure(1);
plot(time,y,'r',time,ym,'b');
xlabel('time(s)');
ylabel('Approaching');
figure(2);
plot(time,y-ym,'r');
xlabel('time(s)');
ylabel('Approaching error');
%******************绘图*************************