matlab中dividevec函数,新手求助Matlab的BP做点预测

小弟最近需要用BP做点预测,所以找到了这里

但是还是不是很会用

学些了这个帖子

提供一个Matlab的BP神经网络的基础资料(继续)

晕死还不能给链接

按照这个帖子中给出的教学程序研究了懂了点皮毛

弄了点数据结果运行还是不正确

??? Error using ==> dividevec at 52

P and T have different numbers of columns.

Error in ==> Untitled at 59

[trainSamples,validateSamples,testSamples] = dividevec(normInput,normTarget,validatePercent,testPercent);

是因为09.a的matlab没有dividevec这个函数吗?help里确实也没找到

自己照着改了下数据的程序

clc

clear

p=[1.6 70 30 60;1.6 70 30 80;1.6 70 30 100;...

1.6 70 60 60;1.6 70 60 80;1.6 70 60 100;...

1.6 70 90 60;1.6 70 90 80;1.6 70 90 100;...

1.6 90 30 60;1.6 90 30 80;1.6 90 30 100;...

1.6 90 60 60;1.6 90 60 80;1.6 90 60 100;...

1.6 90 90 60;1.6 90 90 80;1.6 90 90 100;...

1.6 120 30 60;1.6 120 30 80;1.6 120 30 100;...

1.6 120 60 60;1.6 120 60 80;1.6 120 60 100;...

1.6 120 90 60;1.6 120 90 80;1.6 120 90 100;...

1.9 70 30 60;1.9 70 30 80;1.9 70 30 100;...

1.9 70 60 60;1.9 70 60 80;1.9 70 60 100;...

1.9 70 90 60;1.9 70 90 80;1.9 70 90 100;...

1.9 90 30 60;1.9 90 30 80;1.9 90 30 100;...

1.9 90 60 60;1.9 90 60 80;1.9 90 60 100;...

1.9 90 90 60;1.9 90 90 80;1.9 90 90 100;...

1.9 120 30 60;1.9 120 30 80;1.9 120 30 100;...

1.9 120 60 60;1.9 120 60 80;1.9 120 60 100;...

1.9 120 90 60;1.9 120 90 80;1.9 120 90 100;...

2.2 70 30 60;2.9 70 30 80;2.9 70 30 100;...

2.2 70 60 60;2.2 70 60 80;2.2 70 60 100;...

2.2 70 90 60;2.2 70 90 80;2.2 70 90 100;...

2.2 90 30 60;2.2 90 30 80;2.2 90 30 100;...

2.2 90 60 60;2.2 90 60 80;2.2 90 60 100;...

2.2 90 90 60;2.2 90 90 80;2.2 90 90 100;...

2.2 120 30 60;2.2 120 30 80;2.2 120 30 100;...

2.2 120 60 60;2.2 120 60 80;2.2 120 60 100;...

2.2 120 90 60;2.2 120 90 80;2.2 120 90 100];%输入数据,共81组,每组4个输入

t=[0.4768 0.4319 0.3912 0.6017 0.5768 0.5529 0.7314 0.7213 0.7069...

0.8657 0.8812 0.8764 0.9647 0.9586 0.9489 1.1294 1.0871 1.0742...

1.0723 0.9873 0.9947 1.3846 1.2954 1.2877 1.3416 1.3217 1.3008...

0.4013 0.3847 0.3642 0.5347 0.5043 0.4928 0.5736 0.5674 0.5689...

0.8014 0.7862 0.7472 1.0847 0.9096 0.7923 0.9366 0.8947 0.7142...

1.1342 0.9647 0.9165 1.3365 1.2438 1.2147 1.3863 1.2617 1.1926...

0.3692 0.3374 0.2881 0.5278 0.4812 0.4142 0.6379 0.5143 0.4038...

0.9038 0.8142 0.7109 1.0365 0.8876 0.8237 1.0206 0.9143 0.8842...

1.0433 0.9312 0.8742 1.2860 1.1794 1.1069 1.2556 1.2035 1.1847];%输出数据,共81组,每组1个输出

[normInput,ps] = mapminmax(p);

[normTarget,ts] = mapminmax(t);

testPercent = 0.20; % Adjust as desired

validatePercent = 0.20; % Adust as desired

[trainSamples,validateSamples,testSamples] = dividevec(normInput,normTarget,validatePercent,testPercent);

NodeNum1 = 20; % 隐层第一层节点数

TypeNum = 1; % 输出维数

net=newff(minmax(normInput),[NodeNum1,TypeNum],{TF1 TF2},'traingdx');%创建三层BP网络

net.trainfcn='traingdm';

[net,tr] = train(net,trainSamples.P,trainSamples.T,[],[],validateSamples,testSamples);

[normTrainOutput,Pf,Af,E,trainPerf] = sim(net,trainSamples.P,[],[],trainSamples.T);%正常输入的9组p数据,BP得到的结果t

[normValidateOutput,Pf,Af,E,validatePerf] = sim(net,validateSamples.P,[],[],validateSamples.T);%用作变量3的数据p,BP得到的结果t

[normTestOutput,Pf,Af,E,testPerf] = sim(net,testSamples.P,[],[],testSamples.T);%用作测试的3组数据p,BP得到的结果t

%---------------------------------------------------

% 仿真后结果数据反归一化,如果需要预测,只需将预测的数据P填入

% 将获得预测结果t

%---------------------------------------------------

trainOutput = mapminmax('reverse',normTrainOutput,ts);%正常输入的9组p数据,BP得到的归一化后的结果t

trainInsect = mapminmax('reverse',trainSamples.T,ts);%正常输入的9组数据t

validateOutput = mapminmax('reverse',normValidateOutput,ts);%用作变量3的数据p,BP得到的归一化的结果t

validateInsect = mapminmax('reverse',validateSamples.T,ts);%用作变量3的数据t

testOutput = mapminmax('reverse',normTestOutput,ts);%用作变量3组数据p,BP得到的归一化的结果t

testInsect = mapminmax('reverse',testSamples.T,ts);%用作变量3组数据t

figure

plot(1:81,[trainOutput validateOutput],'b-',1:12,[trainInsect validateInsect],'g--',13:15,testOutput,'m*',13:15,testInsect,'ro');

title('o为真实值,*为预测值')

xlabel('试验编号');

ylabel('抗拉强度');

有几个问题

1.这样的数据会不会可以用BP,小弟看本专业中用BP的数据都是变量,没有这样重复的

2.预测阶段,怎么做呢?是将程序中的reverse修改为需要预测的数据吗/

3.那个反向的误差修正这个程序是怎么实现的?

4.训练、预测、绘图的语句也看不懂?是版本的问题吗/

下载资料都是需要金币的,新人很少学起来也很慢,想找个热心人帮忙完成这个程序

如果又需要的话可以给与帮我完成程序的人一个8无的QQ。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值