📄 untitled.asv
字号:
err_goal=0.001;max_epoch=500;epoch=0;
I=1;J=10;K=1;net=zeros(J,1);onet=zeros(J,1);
Wji=0.1*randn(J,I);Wkj=0.01*randn(K,J);P=0.1*rand(J,1);Q=0.01*rand(1);
a1=0.04;a2=0.03;a3=0.08;w=0;w0=1;d2=0;
c1=5;v1=randn(501,1)
x=[0:0.1:50];
h=length(x);
yp=zeros(1,h);
for i=1:h
x(i)=x(i)+0.01*v1
yp(i)=tower(x(i),c1);
for j=1:10
net(j)=net(j)+Wji(j,1)*x(i);inet(j)=net(j)+P(j);
onet(j)=tansig(inet(j));
yb=yb+Wkj(1,j)*onet(j);
end
yi=yb+Q;
y(i)=tansig(yi);
e=yp-y;SSE=1/2*e*e';
while (SSE>err_goal & epoch<max_epoch)
d_Wji=zeros(J,I);d_Wkj=zeros(K,J);d_P=zeros(J,1);d_Q=0;
for j=1:10
d1=(1-onet(j))*d2*Wkj(1,j);do=onet(j)*d1;
d_P(j)=0.1*d_P(j)+0.3*do;
if SSE<0.05, a1=0;a2=0;a3=0.005;
else , a1=0.02;a2=0.05;a3=0.005;
end
d_Wji(j,1)=a1*do*x(i)+a2*d_Wji(j,1)+a3*w;
Wji(j,1)=Wji(j,1)+d_Wji(j,1);
P(j)=P(j)+d_P(j);
end
w=yp-y; w0=w; w=0.4*w0+(yp-y);
if SSE<0.002 w=0.7*w;end
for j=1:10
d2=y*(1-y)*(yp-y);
d_Wkj(1,j)=0.26*d_Wkj(1,j)+0.132*d2*onet(j)+0.0016*w;
Wkj(1,j)=Wkj(1,j)+d_Wkj(1,j);
end
d_Q=0.102*d_Q+0.3*(yp-y);Q=Q+d_Q;
if SSE<=0.003 break; else end
for j=1:10
net(j)=net(j)+Wji(j,1)*x(i);inet(j)=net(j)+P(j);
onet(j)=tansig(inet(j));yb=yb+Wkj(1,j)*onet(j);
end
yi=yb+Q;y(i)=tansig(yi);
epoch=epoch+1;
e=yp-y;
SSE=(1/2)*e*e'
[epoch SSE]
end
end
plot(x,yp,'r',x,y,':');
title('训练后的目标序列和实际输出序列')
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -