http://www.ilovematlab.cn/thread-42747-1-1.html
close all
clearclc
%% BP建模
%原始数据归一化
m_data=[
8.20 6.80 6.00 6.20 5.60 6.20 4.80 0.60 7.20 7.00 7.60 3.80 0.80 14.00 0.1331 2.442 95.15 99.54 ;
7.80 7.40 6.80 7.60 6.00 5.60 4.20 0.40 7.80 6.80 7.00 3.20 0.60 13.80 0.1348 2.463 94.78 99.70 ;
8.40 6.60 7.00 6.60 6.00 5.40 4.40 0.20 7.40 6.60 7.20 2.80 0.20 14.00 0.1346 2.439 94.86 99.24 ;
8.20 6.80 7.80 7.20 7.20 4.60 4.40 0.20 7.20 6.40 7.60 2.40 1.20 13.90 0.1299 2.439 94.51 99.52 ;
8.00 6.80 7.60 7.20 6.80 5.60 5.20 0.60 7.20 6.80 7.20 2.80 0.80 14.30 0.1314 2.505 89.43 96.96 ;
8.20 7.00 7.20 6.60 6.40 6.20 5.00 0.40 7.60 6.20 6.80 2.20 0.60 13.70 0.1301 2.705 92.45 98.97 ;
7.60 7.00 7.40 7.00 6.40 6.60 5.20 0.80 6.80 7.00 6.80 2.60 1.00 13.60 0.1291 2.681 94.86 99.95 ;
7.20 6.60 7.20 7.20 6.60 6.20 4.80 0.20 7.60 6.80 6.80 3.40 1.20 13.80 0.1287 2.658 93.63 99.59 ;
7.20 6.80 8.00 7.60 7.00 6.80 5.40 0.60 7.40 6.60 7.00 2.80 0.40 13.60 0.1292 2.729 93.73 99.45 ;
6.60 7.60 8.00 7.20 6.40 6.20 3.80 1.00 6.60 6.20 6.40 2.80 1.20 13.60 0.1313 2.693 94.23 99.70 ;
6.80 7.00 6.80 6.20 5.60 5.40 3.80 1.00 6.20 6.40 6.80 3.80 1.40 14.10 0.1318 2.704 93.48 98.63 ;
7.60 6.20 6.80 6.80 6.00 5.20 4.60 1.00 6.20 6.60 6.60 3.60 1.60 14.00 0.1323 2.747 91.16 98.47 ;
8.00 6.60 6.80 6.20 5.00 5.40 3.80 1.00 6.20 5.80 6.00 4.00 1.80 13.60 0.1273 2.690 94.28 99.72 ;
5.80 8.00 6.80 6.80 5.40 5.80 4.00 1.20 7.40 6.40 7.40 2.40 1.00 14.20 0.1369 2.672 93.24 99.98 ;
6.40 8.20 7.00 7.00 5.20 6.00 3.40 1.40 7.40 6.40 6.80 2.60 1.20 14.20 0.1400 2.741 93.22 100.00 ;
5.20 8.00 7.60 7.00 5.60 5.60 4.60 1.40 7.20 5.80 6.40 2.60 1.60 14.50 0.1384 2.761 94.06 100.00 ;
6.40 7.00 6.80 6.60 4.40 5.20 3.60 1.20 7.00 7.00 6.00 2.60 1.40 14.40 0.1361 2.735 93.76 99.98 ;
5.20 7.40 6.80 6.80 5.20 5.60 3.60 1.60 7.20 6.80 6.20 2.40 1.40 14.00 0.1331 2.800 92.53 99.36 ;
5.60 7.40 6.60 6.60 5.00 5.60 4.00 1.40 6.60 6.40 6.80 2.80 1.60 14.00 0.1307 2.877 88.51 96.47 ;
5.80 8.20 6.60 6.20 5.40 5.40 3.80 1.00 7.00 6.80 6.80 3.80 1.40 13.90 0.1301 2.861 94.04 99.75 ;
5.60 7.00 6.60 6.40 5.60 5.00 3.20 1.00 6.60 5.80 5.40 2.80 1.00 14.00 0.1336 2.846 92.38 98.90 ;
5.40 6.20 5.80 5.00 4.40 4.20 3.20 1.40 6.20 5.40 4.40 2.40 2.20 14.10 0.1334 2.868 86.94 96.76 ;
6.80 8.40 7.20 6.80 5.60 6.20 3.20 1.00 7.00 6.60 6.00 2.60 2.00 14.80 0.1398 2.789 93.63 99.61 ;
6.60 7.60 6.60 6.60 5.40 6.20 3.40 1.00 7.40 7.40 6.40 3.80 1.60 14.50 0.1445 2.826 91.45 98.74 ;
7.40 7.40 7.40 6.60 6.80 6.80 4.20 1.20 8.00 6.60 6.40 3.20 1.40 15.00 0.1429 2.868 90.66 98.36 ;
6.00 8.80 6.80 6.80 5.80 6.60 3.20 1.40 7.00 6.00 7.00 3.60 1.40 14.40 0.1376 2.771 94.47 100.00 ;
4.00 8.60 7.60 7.00 6.80 7.00 3.80 0.20 6.20 6.00 6.60 2.60 1.60 14.10 0.1324 2.741 94.41 99.45 ;
5.80 7.40 7.20 7.80 7.20 6.80 3.60 0.20 7.00 6.40 7.20 3.40 1.20 14.20 0.1392 2.765 93.91 99.61 ;
7.40 7.40 6.80 7.40 6.80 6.00 4.00 0.40 6.80 5.80 7.20 3.40 1.60 14.20 0.1372 2.752 93.50 99.47 ;
6.40 7.20 7.20 7.40 6.40 5.80 3.80 0.40 6.60 6.40 7.40 2.80 1.60 14.30 0.1389 2.753 94.30 99.54 ;
6.00 7.20 8.00 7.40 6.40 7.00 4.80 0.60 7.80 7.00 7.00 3.40 1.20 14.50 0.1381 2.803 93.97 98.90 ;
7.20 6.80 7.40 7.80 6.00 6.20 4.00 0.80 7.40 6.60 7.00 2.80 1.60 14.60 0.1402 2.796 93.61 99.11 ;
6.00 7.00 7.20 6.40 5.80 5.80 3.40 0.80 6.00 6.40 5.80 3.00 2.00 14.20 0.1388 2.750 94.08 99.61 ;
6.80 6.80 7.20 7.40 6.40 6.60 3.60 0.60 6.60 6.60 6.40 2.80 1.60 14.40 0.1383 2.793 93.03 99.22 ;
8.20 6.40 7.00 6.40 6.00 6.00 4.20 0.40 6.20 5.80 5.60 1.80 1.80 14.10 0.1360 2.495 88.37 97.45 ;
4.40 7.80 6.20 6.40 6.20 5.60 3.40 1.00 4.60 3.80 3.80 1.60 0.80 14.00 0.1364 2.445 93.71 99.36 ;
5.00 7.60 7.00 6.60 6.40 6.40 4.00 0.40 6.60 5.20 5.80 2.00 1.00 14.10 0.1374 2.500 88.04 97.14 ;
6.80 7.40 7.00 7.60 7.00 6.20 4.20 0.60 7.00 6.60 6.20 3.00 1.80 14.10 0.1382 2.518 87.64 96.78 ;
5.80 7.20 6.00 6.60 6.20 6.40 3.40 0.20 6.00 4.60 4.40 2.00 0.60 14.00 0.1346 2.479 93.22 99.13 ;
7.40 7.80 8.60 8.00 7.00 7.00 4.60 0.40 8.00 7.40 8.00 2.60 0.40 13.80 0.1310 2.590 92.79 98.90 ;
];
%% 定义网络输入p和期望输出t
pause
clc
p1=m_data(:,1:13);
t1=m_data(:,14:18);
p=p1';t=t1';
[pn,minp,maxp,tn,mint,maxt]=premnmx(p,t)
% 主成分分析
[ptrans,transMat]=prepca(pn,0.05);
[R,Q]=size(ptrans);
iitst=2:4:Q;
iival=4:4:Q;
iitr=[1:4:Q 3:4:Q];
vv.P=ptrans(:,iival);
vv.T=tn(:,iival);
vt.P=ptrans(:,iitst);
vt.T=tn(:,iitst);
ptr=ptrans(:,iitr);
ttr=tn(:,iitr);
%% 建立网络
net=newff(minmax(ptr),[5,5],{'tansig','purelin'},'trainlm');
%% 训练网络
net.trainParam.show=20;
net.trainParam.lr=0.01;
net.trainParam.epochs=400;
net.trainParam.goal=1e-5;
[net,tr]=train(net,ptr,ttr,[],[],vv,vt);
% 绘出训练过程中个误差的变化曲线
plot(tr.epoch,tr.perf,'r',tr.epoch,tr.vperf,':g',tr.epoch,tr.tperf,'-.b');
legend('训练','确证','测试',-1);
ylabel('平方误差');
xlabel('时间');
an=sim(net,ptrans)
a=postmnmx(an,mint,maxt)