matlab神经网络多输入单输出问题

想在matlab中用199个数作为输入,1个数作为输出,程序如下,运行起来总是报错,提示输入和输出维数不匹配...难道matlab不能做这种多输入单输出的神经网络?
clear
p=1:0.05:11-0.05;
t=(p-1).*(p-2).*(p-4).*(p-9).*(p-11);
N=length(p);
input=t(1:199)';
output=t(200);
ptest=t(2:200)';

B=minmax(input')
net = newff(B,[20 6 1],{'tansig' 'tansig' 'purelin'},'traingdx','learngdm');
[net,tr]=train(net,input,output,[],[]);
a=sim(net,ptest);

首先:你的想法(199个数作为输入,1个数作为输出)是没什么问题,但是你的输入矩阵为199*n,你的n=1,表明你的样本只有一个,这样一个孤立的样本作为训练样本没什么意义;

其次:姑且不谈你的样本意义,需要跟你说明的是,matlab神经网络工具箱是以一列为一个样本,而你的B=minmax(input')使得B为1*199的矩阵,显然不对,最好加上B=B';
最后:[net,tr]=train(net,input,output,[],[]);中的参数为三个也行,改为net=train(net,input,output);
上面所述是按旧版本来的。
下面是我修改的程序,matlab版本R2012b,你的是旧版本的matlab,所以newff用法跟新的略有不同:
clear
p=1:0.05:11-0.05;
t=(p-1).*(p-2).*(p-4).*(p-9).*(p-11);
N=length(p);
input=t(1:199)';
output=t(200);
ptest=t(2:200)';

% B=minmax(input');
net = newff(input,output,[20 6],{'tansig' 'tansig' 'purelin'},'traingdx','learngdm');
[net,tr]=train(net,input ,output);
a=sim(net,ptest');
温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答