⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pca_elman.m

📁 将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 + -