请问一下我这个matlab程序怎样进行数据归一化才能出结果,怕没有人解答先50,有大神愿意帮忙我再增加悬赏

P=[39.1837 24.4898 11.4286 18.3673 6.5306;46.8085 36.8794 7.5177 8.5106 0.2837;33.6634 2.9703 27.7228 33.1683 2.4752;42.0168 33.6134 8.9636 14.8459 0.5602;46.1321 11.5723 8.5220 33.1447 0.6289;7.8105 30.4018 43.3893 17.3722 1.0262;32.7586 44.2529 12.0690 10.9195 0;40.2597 25.1082 16.0173 18.6147 0;33.5617 33.5617 23.4932 9.2295 0.1538;0.9811 43.8318 28.3884 26.7987 0;38.1862 31.0263 22.9117 7.8759 0;24.0035 27.8000 30.0000 24.4228 0;16.7460 16.5319 57.3739 6.8744 2.4738;16.1370 24.0087 48.9029 10.1348 0.8167;4.6875 10.8259 66.9643 17.5223 0;3.7648 26.8179 61.8876 7.2202 0.3094;18.6139 17.9724 55.3628 6.6865 1.3644;30.1101 39.0330 26.1399 4.5597 0.1572;15.8933 21.8097 58.1206 3.1903 0.9861;15.9445 30.0131 48.7713 4.9709 0.3001;1.3802 6.1511 76.6277 9.2081 6.6329;34.6084 18.2149 17.3042 14.3898 15.4827;84.3327 8.0593 0.3868 7.2211 0;61.3944 10.8221 10.4058 4.1623 13.2154;57.9832 18.8655 8.6555 4.6218 9.8739;44.9775 11.0945 2.6987 12.7436 28.4858;87.2663 6.5004 1.0686 5.1647 0;89.9942 5.3479 2.7027 1.9551 0;30.4094 8.1412 16.0032 0.7212 44.7250;17.0118 13.7574 39.5710 3.0695 26.5902;62.3063 11.1903 10.0123 1.8599 14.6311;44.9640 8.0935 18.8849 1.0941 26.9784;32.5967 15.4696 38.6740 4.9724 8.2873;49.7696 8.4485 19.3548 2.1505 20.2765;44.7927 17.4924 23.5592 3.6400 10.5157;12.0233 12.0046 12.0000 10.0593 61.8213];
>> T=[1 0 0 0 0;1 0 0 0 0;1 0 0 0 0;1 0 0 0 0;1 0 0 0 0;0 1 0 0 0;0 1 0 0 0;0 1 0 0 0;0 1 0 0 0;0 1 0 0 0;0 1 0 0 0;0 1 0 0 0;0 0 1 0 0;0 0 1 0 0;0 0 1 0 0;0 0 1 0 0;0 0 1 0 0;0 0 1 0 0;0 0 1 0 0;0 0 1 0 0;0 0 1 0 0;0 0 0 1 0;0 0 0 1 0;0 0 0 1 0;0 0 0 1 0;0 0 0 1 0;0 0 0 1 0;0 0 0 1 0;0 0 0 0 1;0 0 0 0 1;0 0 0 0 1;0 0 0 0 1;0 0 0 0 1;0 0 0 0 1;0 0 0 0 1;0 0 0 0 1];
>> net=newff(P,T,10,{'tansig','logsig'},'trainrp');%建立bp神经网路
>> net.trainparam.show=50;
>> net.trainparam.lr=0.05;
>> net.trainparam.mc=0.9;
>> net.trainparam.epochs=10000;
>> net.trainparam.goal=0.001;%参数的设置
>> [net tr]=train(net,P,T);%采用弹性bp算法训练
>> A=sim(net,P);%bp网络的仿真
>> E=T-A;
>> MSE=mse(E);
gensim(net)
R=[7.2 5.6 3.5 2.7 3.1;
120.0 120.0 33.0 83.0 0.56;
20.6 19.6 7.5 60.9 1.52;
42 97 156 598 0;
1556 93 34 46 0;
200 46 16 109 128;
98 122 31 292 15;
92 56 42 35 0;
31.6 5.3 1.3 12.2 13.1;
72 512 138 1200 5.6];
Z=sim(net,R);

第1个回答  推荐于2016-10-08
你把想要归一化的数据贴上来,我帮你归一化,很简单的。。。我在线
matlab里面7.6以上版本都有再带的归一化函数,比如说mapminmax

你的p是5*18矩阵 t是5*5矩阵,你的归一化程序没错,你结果输出就是P和T矩阵,我帮你实现了,请看结果:p=[44.53 2.98 0.77 1.94 5.13 50.95 1.64 0.61 0.38 3.52 51.04 2.03 0.72 0.54 4.39 0.6 0.2 0.2
53.73 3.32 1.04 3.31 4.62 44.53 2.98 0.77 1.94 5.13 47.32 2.48 0.85 1.76 3.44 0.6 0.2 0.2
53.73 3.32 1.04 3.31 4.62 44.53 2.98 0.77 1.94 5.13 53.81 2.21 0.68 0.58 4.21 0.2 0.6 0.2
47.32 2.48 0.85 1.76 3.44 61.37 2.83 1.07 0.26 3.90 44.53 2.98 0.77 1.94 5.13 0.2 0.6 0.2
57.28 3.23 0.81 2.82 3.29 50.95 1.64 0.61 0.38 3.52 53.81 2.21 0.68 0.58 4.21 0.2 0.6 0.2]
t=[46.39 2.44 0.64 1.46 4.72
50.00 2.95 0.79 1.62 4.68
46.90 2.80 0.94 2.80 4.53
55.07 2.77 0.81 2.04 4.84
50.30 2.40 1.01 0.94 3.60]
for i=1:5
P(i,:)=(p(i,:)-min(p(i,:)))/(max(p(i,:))-min(p(i,:)));
end
for i=1:5
T(i,:)=(t(i,:)-min(t(i,:)))/(max(t(i,:))-min(t(i,:)));
end
data1=P' %转置得到18*5
data2=T' %转置得到5*5
最后结果是:
data1 =
0.8720 1.0000 0.9985 0.7703 1.0000
0.0547 0.0583 0.0582 0.0373 0.0531
0.0112 0.0157 0.0157 0.0106 0.0107
0.0342 0.0581 0.0580 0.0255 0.0459
0.0970 0.0826 0.0824 0.0530 0.0541
0.9982 0.8281 0.8269 1.0000 0.8891
0.0283 0.0519 0.0519 0.0430 0.0252
0.0081 0.0106 0.0106 0.0142 0.0072
0.0035 0.0325 0.0325 0.0010 0.0032
0.0653 0.0921 0.0920 0.0605 0.0582
1.0000 0.8803 1.0000 0.7247 0.9392
0.0360 0.0426 0.0375 0.0454 0.0352
0.0102 0.0121 0.0090 0.0093 0.0084
0.0067 0.0291 0.0071 0.0284 0.0067
0.0824 0.0605 0.0748 0.0806 0.0703
0.0079 0.0075 0 0 0
0 0 0.0075 0.0065 0.0070
0 0 0 0 0
data2 =
1.0000 1.0000 1.0000 1.0000 1.0000
0.0393 0.0439 0.0405 0.0361 0.0296
0 0 0 0 0.0014
0.0179 0.0169 0.0405 0.0227 0
0.0892 0.0790 0.0781 0.0743 0.0539追问

朋友,我就是归一化上面的P,T,R,三个矩阵中的数据,。

本回答被提问者和网友采纳