?? bp1.m
字號:
%//////////初始化/////////
clear all
close all
IN=2;H=10;Out=1;
l=-3:0.01:3;
len=length(l);
wi=0.5*rands(H,IN);
wo=0.5*rands(Out,H);
wi_2=wi;wi_1=wi;wo_2=wo;wo_1=wo;
u_1=0;
y_1=0;
a=0.3;
ts=1;
temp=0;
for k=1:1:len
%//////網絡的正向推理////////
u(k)=0.75*sin(6*pi*l(k));
time(k)=k*ts;
y(k)=u(k)*u(k)*u(k)+y_1/(2+y_1*y_1);
%y(k)=(y_1)/(1+y_1^2)+u_1;
x=[u(k);y_1];
I=wi*x;
for j=1:1:H
%xK(j)=1/(1+exp(-I(j)));
xK(j)=(1-exp(-I(j)))/(1+exp(-I(j)));
dsx(j)=2*exp(-I(j))/((1+exp(-I(j)))^2);
%dsx(j)=xK(j)*(1-xK(j));
end
ym(k)=xK*wo';
if ym(k)>=0.69
ym(k)=0.69;
end
if ym(k)<=-0.69
ym(k)=-0.69;
end
%/////////////誤差計算///////////////
error(k)=((y(k)-ym(k))^2)/2;
temp=temp+error(k);
E(k)=temp/k;
%//////////////反向推理過程////////////
for j=1:1:H
for i=1:1:IN
dwi(j,i)=-[y(k)-ym(k)]*wo(j)*dsx(j)*x(i);
end
end
for j=1:1:H
dwo(j)=-[y(k)-ym(k)]*xK(j);
end
%///////////////權值的修正/////////////
wi=wi_1-a*dwi;
wo=wo_1-a*dwo;
y_1=y(k);
wi_2=wi_1;wi_1=wi;wo_2=wo_1;wo_1=wo;
end
%///////////曲線u//////////////////
figure(1);
plot(time,u,'r');
xlabel('time(s)');ylabel('u');
%///////////曲線y,ym//////////////////
figure(2);
plot(time,y,'r',time,ym,'b');
xlabel('time(s)');ylabel('y,ym');
%///////////曲線E//////////////////
figure(3);
plot(time,E,'r');
xlabel('time(s)');ylabel('E');
figure(4);
plot(u,y,'r',u,ym,'b');
xlabel('u');ylabel('y');
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -