📄 pca_elman.m
字号:
%Elman Neural Network
clear;
load alu.txt;%yhl826.txt;
%a=alu;%yhl826;
%a1=(a(:,5)+a(:,6)+a(:,7))/3;
%a2=(a(:,8)+a(:,9)+a(:,10))/3;
%a3=(a(:,11)+a(:,12)+a(:,13))/3;
%b=[a1 a2 a3];
%yhl=[a(:,1:4) b a(:,14:22)];
%P=yhl(:,1:15);
%T1=yhl(:,16);
P=alu(:,1:14);
T1=alu(:,15);
X=P;
Y=T1;
[Xn,minX,maxX,Yn,minY,maxY] = premnmx(P',T1');%P'and T',not P and T in order that
%columns of P' and T' is consistent
[mX,nX]=size(X);
[mY,nY]=size(Y);
nTest=28;%190
%Xn1=Xn(:,1:(mX-nTest)); %train patterns
%Xn2=Xn(:,(mX-nTest+1):mX); %test patterns
Yn1=Yn(:,1:(mX-nTest));
Yn2=Yn(:,(mX-nTest+1):mX);
Y1=Y(1:(mX-nTest),:);
Y2=Y((mX-nTest+1):mX,:);
%process of data
[T,P,W] = pca(Xn',5);
t1=T';
y1=Y';
[tn,mint,maxt,yn,miny,maxy] = premnmx(t1,y1);
tn1=tn(:,1:(mX-nTest));
tn2=tn(:,(mX-nTest+1):mX);
yn1=yn(:,1:(mX-nTest));
yn2=yn(:,(mX-nTest+1):mX);
S1 = 15; %Number of hidden neurons
[S2,Q] = size(y1);
%minmax returns the Rx2 matrix of minimum and maximum values for each
%row of M.
%Network Training
st = cputime;%the computation time of start
net = newelm(minmax(tn1),[S1 S2],{'tansig','purelin'},'traingdx');
net.trainParam.epochs = 1000;
net.trainParam.show = 500;
net.trainParam.goal = 0.01;
net.performFcn = 'sse';
[net tr] = train(net,tn1,yn1);
fprintf('Execution time : %20.19f seconds\n',cputime - st);
%Display the error
figure(2);
semilogy(tr.epoch,tr.perf);
title('Sum Squared Error of Elman Network');
xlabel('Epoch');
ylabel('Sum Squared Error');
%Simulate the network:
Ybn1 = sim(net,tn1);
Yb1 = postmnmx(Ybn1,miny,maxy);
Ybn2 = sim(net,tn2);
Yb2 = postmnmx(Ybn2,miny,maxy);
disp('fitting Error is:');
Err_Elman1=sqrt(sumsqr(Y1'-Yb1)/(size(Yn1,2)));
disp(Err_Elman1);
disp('testing Error is:');
Err_Elman2=sqrt(sumsqr(Y2'-Yb2)/(size(Yn2,2)));
disp(Err_Elman2);
figure(3);
ct=1:1:(mX-nTest);
plot(ct,Y1,'b:',ct,Yb1,'r-');
legend('Analysis value','PCA-Elman output');
xlabel('Sample No.');
ylabel('Value');
%Network Testing
figure(4);
ct=(mX-nTest+1):1:Q;
plot(ct,Y2,'b:',ct,Yb2,'r-');
legend('Analysis value','PCA-Elman output');
xlabel('Sample No.');
ylabel('Value');
figure(5);%画出所有样本的拟合效果图
Yb3=[Yb1 Yb2];
ct=1:1:Q;
plot(ct,Y,'r:',ct,Yb3,'b-');
legend('value desired','PCA-Elman out');
xlabel('sample No.');
ylabel('Value');
%save net.IW, net.b,net.LW elmanw.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 + -