clear all;close all;xite=0.50;alfa=0.05;w2=rand(6,1);w2_1=w2;w2_2=w2;w1=rand(2,6);w1_1=w1;w1_2=w1;dw1=0*w1;x=[0,0]';u_1=0;y_1=0;I=[0,0,0,0,0,0]';Iout=[0,0,0,0,0,0]';FI=[0,0,0,0,0,0]';ts=0.001;for k=1:1:1000time(k)=k*ts;u(k)=0.50*sin(3*2*pi*k*ts);a(k)=1.2*(1-0.8*exp(-0.1*k));y(k)=a(k)*y_1/(1+y_1^2)+u_1;for j=1:1:6I(j)=x'*w1(:,j);Iout(j)=1/(1+exp(-I(j)));endyn(k)=w2'*Iout;e(k)=y(k)-yn(k);w2=w2_1+(xite*e(k))*Iout+alfa*(w2_1-w2_2); for j=1:1:6FI(j)=exp(-I(j))/(1+exp(-I(j)))^2;endfor i=1:1:2for j=1:1:6dw1(i,j)=e(k)*xite*FI(j)*w2(j)*x(i);endendw1=w1_1+dw1+alfa*(w1_1-w1_2);x(1)=u(k);x(2)=y(k);w1_2=w1_1;w1_1=w1;w2_2=w2_1;w2_1=w2;u_1=u(k);y_1=y(k);endfigure(1);plot(time,y,'r',time,yn,'b');xlabel('times');ylabel('y and yn');grid onts=0.1;for k=1:1:200time(k)=k*ts;u(k)=1;a(k)=1.2*(1-0.8*exp(-0.1*k));y(k)=a(k)*y_1/(1+y_1^2)+u_1;for j=1:1:6I(j)=x'*w1(:,j);Iout(j)=1/(1+exp(-I(j)));endyn(k)=w2'*Iout;e(k)=y(k)-yn(k);w2=w2_1+(xite*e(k))*Iout+alfa*(w2_1-w2_2); for j=1:1:6FI(j)=exp(-I(j))/(1+exp(-I(j)))^2;endfor i=1:1:2for j=1:1:6dw1(i,j)=e(k)*xite*FI(j)*w2(j)*x(i);endendw1=w1_1+dw1+alfa*(w1_1-w1_2);x(1)=u(k);x(2)=y(k);w1_2=w1_1;w1_1=w1;w2_2=w2_1;w2_1=w2;u_1=u(k);y_1=y(k);y0(k)=yn(k);endTs=5;N=200;P=25;m=20;Sv=10;yg_1=0;A=zeros(P,m);a=zeros(N,1);for i=1:Na(i)=y0(i);endfor i=1:Pfor j=1:mif i-j+1>0A(i,j)=a(i-j+1);endendendK=inv(A'*A+eye(m))*A';y=zeros(N,1);u=zeros(N,1);e=zeros(N,1);A0=zeros(P,N-1);for i=1:Pfor j=N-2:-1:1if N-j+1+i-1<=NA0(i,j)=a(N-j+1+i-1)-a(N-j+i-1);elseA0(i,j)=0;endendA0(i,N-1)=a(i+1);endfor k=2:NUk_1=zeros(N-1,1);for i=1:N-1if k-N+i<=0Uk_1(i)=0;elseUk_1(i)=u(k-N+i);endendY0=A0*Uk_1;a(k)=1.2*(1-0.8*exp(-0.1*k));yg(k)=a(k)*y_1/(1+y_1^2)+u_1;u_1=u(k);yg_1=yg(k);e(k)=y(k)-yg(k);Ysk=zeros(P,1);for i=1:PYsk(i)=Sv;endEk=zeros(P,1);for i=1:PEk(i)=0.1*i*e(k);enddertu=K*(Ysk-Y0-Ek);for i=1:mif k+i-1<=Nu(k+i-1)=u(k+i-1-1)+dertu(i);endendtemp=0;for j=1:N-1if k-j<=0temp;elseif k-j-1<=0temp=temp+a(j)*u(k-j);elsetemp=temp+a(j)*(u(k-j)-u(k-j-1));endendendif k-N<=0y(k)=temp+e(N);elsey(k)=temp+a(N)*u(k-N)+e(N);endendt=Ts.*(1:N);figure(3);subplot(2,2,1);plot(t,y,'b',t,yg,'r');legend('预测输出曲线');title('输出曲线');xlabel('Time')ylabel('振幅')grid onsubplot(2,2,2);plot(t,u ,'g');legend('控制作用u')title('控制作用');xlabel('Time')ylabel('振幅')grid onxite=0.50;alfa=0.05;w2=rand(10,1);w2_1=w2;w2_2=w2;w1=rand(6,10);w1_1=w1;w1_2=w1;dw1=0*w1;u_1=0;y_1=0;I=zeros(10,1);Iout=zeros(10,1);FI=zeros(10,1);x=[0,0,0,0,0,0]';for k=3:Nx(1)=yg(k);x(2)=yg(k-1);x(3)=yg(k-2);x(4)=u(k);x(5)=u(k-1);x(6)=u(k-2);for j=1:1:10I(j)=x'*w1(:,j);Iout(j)=1/(1+exp(-I(j)));endy(k)=w2'*Iout;e1(k)=y(k)-yg(k);w2=w2_1-(xite*0.1*e1(k))*Iout+alfa*(w2_1-w2_2); for j=1:1:10FI(j)=exp(-I(j))/(1+exp(-I(j)))^2;endfor i=1:1:6for j=1:1:10dw1(i,j)=e1(k)*xite*FI(j)*w2(j)*x(i);endendw1=w1_1+dw1+alfa*(w1_1-w1_2);w1_2=w1_1;w1_1=w1;w2_2=w2_1;w2_1=w2;endt=Ts.*(1:N);figure(2);plot(t,y,'r',t,yg,'b');xlabel('times');ylabel('y and yg');grid onfor k=3:NUk_1=zeros(N-1,1);for i=1:N-1if k-N+i<=0Uk_1(i)=0;elseUk_1(i)=u(k-N+i);endendY0=A0*Uk_1;a(k)=1.2*(1-0.8*exp(-0.1*k));yg(k)=a(k)*y_1/(1+y_1^2)+u_1;u_1=u(k);yg_1=yg(k);Ysk=zeros(P,1);for i=1:PYsk(i)=Sv;endEk=zeros(P,1);for i=1:PEk(i)=0.1*i*e(k);enddertu=K*(Ysk-Y0-Ek);for i=1:mif k+i-1<=Nu(k+i-1)=u(k+i-1-1)+dertu(i);endendtemp=0;for j=1:N-1if k-j<=0temp;elseif k-j-1<=0temp=temp+a(j)*u(k-j);elsetemp=temp+a(j)*(u(k-j)-u(k-j-1));endendendif k-N<=0y(k)=temp;elsey(k)=temp+a(N)*u(k-N);endfor j=1:1:10I(j)=x'*w1(:,j);Iout(j)=1/(1+exp(-I(j)));endyn(k)=w2'*Iout;e(k)=y(k)-yn(k);x(1)=yg(k);x(2)=yg(k-1);x(3)=yg(k-2);x(4)=u(k);x(5)=u(k-1);x(6)=u(k-2);endt=Ts.*(1:N);figure(3);subplot(2,2,3);plot(t,y,'b',t,yg,'r');legend('预测输出曲线');title('输出曲线');xlabel('Time')ylabel('振幅')grid onsubplot(2,2,4);plot(t,u ,'g');legend('控制作用u')title('控制作用'); xlabel('Time') ylabel('振幅') grid on。