📄 elman.m
字号:
clear
load alu2.txt;
P=alu2(:,1:14);
T=alu2(:,15);
X=P;
Y=T;
[Xn,minX,maxX,Yn,minY,maxY] = premnmx(P',T');
[mX,nX]=size(X);
[mY,nY]=size(Y);
nTest=28;
Xn1=Xn(:,1:(mX-nTest));
Xn2=Xn(:,(mX-nTest+1):mX);
Yn1=Yn(:,1:(mX-nTest));
Yn2=Yn(:,(mX-nTest+1):mX);
Y1=Y(1:(mX-nTest),:);
Y2=Y((mX-nTest+1):mX,:);
S1 = 20;
[S2,Q] = size(T');
%minmax returns the Rx2 matrix of minimum and maximum values for each
%row of M.
%net = newff(minmax(Xn1),[S1 S2],{'logsig' 'purelin'},'trainlm');
net = newelm(minmax(Xn1),[S1 S2],{'logsig' 'purelin'});
%Network Training
%net.trainParam.goal = (0.01);
%net.trainParam.epochs = 1000;
%net.trainParam.show = 5;
net.trainParam.epochs = 1000;
net = train(net,Xn1,Yn1);
%Network Testing
%simulate the network:
Ybn1 = sim(net,Xn1);
Yb1 = postmnmx(Ybn1,minY,maxY);
Ybn2 = sim(net,Xn2);
Yb2 = postmnmx(Ybn2,minY,maxY);
disp('fitting Error is:');
Err_Bp1=sqrt(sumsqr(Y1'-Yb1)/(size(Yn1,2)));
disp(Err_Bp1);
disp('testing Error is:');
Err_Bp2=sqrt(sumsqr(Y2'-Yb2)/(size(Yn2,2)));
disp(Err_Bp2);
%Err_Bp1=std(Y1'-Yb1)
%Err_Bp2=std(Y2'-Yb2)
Yb=[Yb1 Yb2];
figure(2);
ct=1:1:Q;
plot(ct,Y','r-.',ct,Yb,'b-');
legend('process value','Elman output');
xlabel('Sample No');
ylabel('Value');
figure(3);%画出训练样本的拟合效果图
ct=1:1:(mX-nTest);
plot(ct,Y1,'r:',ct,Yb1,'b-');
legend('value desired','Elman out');
xlabel('Sample No');
ylabel('Value');
%Network Testing
figure(4);%画出检验样本的拟合效果图
ct=(mX-nTest+1):1:Q;
plot(ct,Y2,'r:',ct,Yb2,'b-');
legend('value desired','Elman out');
xlabel('sample No.');
ylabel('Value');
%save net.IW, net.b,net.LW bpw.dat -ascii;
celldisp(net.IW);%Display IW;
celldisp(net.LW);%Display LW;
celldisp(net.b);%Display b;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -