bpidentify_trymodel.m

来自「BP神经网络控制系统辨识的m文件原程序」· M 代码 · 共 64 行

M
64
字号
%BP inentification
clear all;
clear all;
xite=0.5;
alfa=0.05;
w2=rands(6,1);
w2_1=w2;w2_2=w2_1;
w1=rands(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;
load error.mat;
load u_m.mat;
for k=1:1:1000
    time(k)=in(1,k);
    u(k)=in(2,k);
    y(k)=out(2,k);
    for j=1:1:6
        I(j)=x'*w1(:,j);
        Iout(j)=1/(1+exp(-I(j)));
    end
yn(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:6
    FI(j)=exp(-I(j))/(1+exp(-I(j)))^2;
end
for i=1:1:2
    for j=1:1:6
        dw1(i,j)=e(k)*xite*FI(j)*w2(j)*x(i);
    end
end
w1=w1_1+dw1+alfa*(w1_1-w1_2);
%%%%%%%%%%%%%%%%Jacobian%%%%%%%%%%%%%%
yu=0;
for j=1:1:6
    yu=yu+w2(j)*w1(1,j)*FI(j);
end
dyu(k)=yu;
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);
end
figure(1);
plot(time,y,'r',time,yn,'b');
xlabel('times');ylabel('y and yn');
figure(2);
plot(time,y-yn,'r');
xlabel('times');ylabel('error');
figure(3);
plot(time,dyu);
xlabel('times');ylabel('dyu');


⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?