
求助!急!谁能帮我看一下我的Matlab的BP程序
求助!急!谁能帮我看一下我的Matlab的BP程序目的:已知一系列数据。预测拟合值,填表形式如图1.问题是怎么查看拟合值和相对误差?能不能后面给加点,直接输出拟合值和相对...
求助!急!谁能帮我看一下我的Matlab的BP程序
目的:已知一系列数据。预测拟合值,填表形式如图1.
问题是怎么查看拟合值和相对误差?能不能后面给加点,直接输出拟合值和相对误差?谢谢啊
程序如下:
%Eexample workability
clear
clc
pp=[170 531.3 0 622.4 1106.4 6.91
165 500.0 0 635.4 1129.6 6.00
170 531.3 0 691.5 1037.3 6.91
165 515.6 0 699.8 1046.9 6.70
165 500.0 0 706.0 1059.0 6.00
165 500.0 0 670.7 1094.3 5.00
165 515.6 0 664.8 1084.6 6.19
170 531.3 0 656.9 1071.8 6.91
170 515.2 0 663.0 1081.8 5.671
170 515.2 0 628.1 1116.7 6.70
170 463.6 51.5 663.0 1081.8 5.15
170 412.1 103.0 663.0 1081.8 5.15
170 360.6 154.5 663.0 1081.8 5.151
170 478.1 53.1 656.9 1071.8 6.38
170 425.0 106.3 656.9 1071.8 6.38
170 371.9 159.4 656.9 1071.8 6.381
165 450.0 50.0 670.7 1094.3 5.001
170 463.6 51.5 628.1 1116.7 5.15
170 412.1 103.0 628.1 1116.7 5.151
170 478.1 53.1 622.4 1106.4 6.38
170 425.0 106.3 622.4 1106.4 6.38
170 371.9 159.4 622.4 1106.4 6.38
170 463.6 51.5 697.9 1046.9 6.69
170 412.1 103.0 697.9 1046.9 6.69
170 360.6 154.5 697.9 1046.9 6.69
170 478.1 53.1 691.5 1037.3 7.44
170 425.0 106.3 691.5 1037.3 7.44
170 371.9 159.4 691.5 1037.3 7.44];
%p为输入向量
p=pp';
tt=[21 42;
20.5 41;
21 40.5;
20.5 40;
21.5 42.5;
19 38;
20 39;
21 43;
21 42;
21 41;
22 42;
22 46;
21 44;
20 40;
20.5 42;
19 38.5;
21 42;
22 45.5;
23 46;
21.5 46;
20.5 44;
22 44;
20 38.5;
21 42;
22.5 47;
20 39;
22 44;
20 39.51];
%t为目标向量
t=tt';
[Pn,minp,maxp,Tn,mint,maxt]=premnmx(p,t)
%创建一个前向bp网络
net=newff(minmax(p),[13,2],{'logsig', 'purelin'},'trainbr');
%设置训练参数
net.trainParam.show=100;
net.trainParam.lr=0.05;
net.trainParam.mc=0.9;
net.trainParam.epochs=1500;
net.trainParam.goal=1e-3;
%对网络进行训练
[net,tr]=train(net,Pn,Tn);
%对网络进行仿真
a=sim(net,Pn);
ta=postmnmx(a,mint,maxt);
e=(t-ta)./t*100
最后我想把拟合值和相对误差填在表格中,但是怎么查看 展开
目的:已知一系列数据。预测拟合值,填表形式如图1.
问题是怎么查看拟合值和相对误差?能不能后面给加点,直接输出拟合值和相对误差?谢谢啊
程序如下:
%Eexample workability
clear
clc
pp=[170 531.3 0 622.4 1106.4 6.91
165 500.0 0 635.4 1129.6 6.00
170 531.3 0 691.5 1037.3 6.91
165 515.6 0 699.8 1046.9 6.70
165 500.0 0 706.0 1059.0 6.00
165 500.0 0 670.7 1094.3 5.00
165 515.6 0 664.8 1084.6 6.19
170 531.3 0 656.9 1071.8 6.91
170 515.2 0 663.0 1081.8 5.671
170 515.2 0 628.1 1116.7 6.70
170 463.6 51.5 663.0 1081.8 5.15
170 412.1 103.0 663.0 1081.8 5.15
170 360.6 154.5 663.0 1081.8 5.151
170 478.1 53.1 656.9 1071.8 6.38
170 425.0 106.3 656.9 1071.8 6.38
170 371.9 159.4 656.9 1071.8 6.381
165 450.0 50.0 670.7 1094.3 5.001
170 463.6 51.5 628.1 1116.7 5.15
170 412.1 103.0 628.1 1116.7 5.151
170 478.1 53.1 622.4 1106.4 6.38
170 425.0 106.3 622.4 1106.4 6.38
170 371.9 159.4 622.4 1106.4 6.38
170 463.6 51.5 697.9 1046.9 6.69
170 412.1 103.0 697.9 1046.9 6.69
170 360.6 154.5 697.9 1046.9 6.69
170 478.1 53.1 691.5 1037.3 7.44
170 425.0 106.3 691.5 1037.3 7.44
170 371.9 159.4 691.5 1037.3 7.44];
%p为输入向量
p=pp';
tt=[21 42;
20.5 41;
21 40.5;
20.5 40;
21.5 42.5;
19 38;
20 39;
21 43;
21 42;
21 41;
22 42;
22 46;
21 44;
20 40;
20.5 42;
19 38.5;
21 42;
22 45.5;
23 46;
21.5 46;
20.5 44;
22 44;
20 38.5;
21 42;
22.5 47;
20 39;
22 44;
20 39.51];
%t为目标向量
t=tt';
[Pn,minp,maxp,Tn,mint,maxt]=premnmx(p,t)
%创建一个前向bp网络
net=newff(minmax(p),[13,2],{'logsig', 'purelin'},'trainbr');
%设置训练参数
net.trainParam.show=100;
net.trainParam.lr=0.05;
net.trainParam.mc=0.9;
net.trainParam.epochs=1500;
net.trainParam.goal=1e-3;
%对网络进行训练
[net,tr]=train(net,Pn,Tn);
%对网络进行仿真
a=sim(net,Pn);
ta=postmnmx(a,mint,maxt);
e=(t-ta)./t*100
最后我想把拟合值和相对误差填在表格中,但是怎么查看 展开
展开全部
Pn是测试样本还是训练样本?这台机器没有matlab,所以只是目测了一下你的程序。
拟合值你直接在后面加入一个a,或者如果是某些版本的matlab,把a=sim(net,Pn);后面的分号去掉就可以了,对于二维输出的话它是2*n或者n*2的矩阵。
如果不知道Pn的准确输出的话相对误差算不出来,因为误差肯定是准确值和你计算值的绝对值,不知道Pn输出的准确值肯定是算不出来相对误差的。但是如果Pn就是训练样本的话,你直接拿a-t再求绝对值就得到了。后面加上个er=abs(a-t)就行了,注意后面不加分号。
拟合值你直接在后面加入一个a,或者如果是某些版本的matlab,把a=sim(net,Pn);后面的分号去掉就可以了,对于二维输出的话它是2*n或者n*2的矩阵。
如果不知道Pn的准确输出的话相对误差算不出来,因为误差肯定是准确值和你计算值的绝对值,不知道Pn输出的准确值肯定是算不出来相对误差的。但是如果Pn就是训练样本的话,你直接拿a-t再求绝对值就得到了。后面加上个er=abs(a-t)就行了,注意后面不加分号。
来自:求助得到的回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询