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

想在matlab中用199个数作为输入,1个数作为输出,程序如下,运行起来总是报错,提示输入和输出维数不匹配...难道matlab不能做这种多输入单输出的神经网络?cle... 想在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);
展开
 我来答
yishu_fanhua
2014-04-16 · TA获得超过110个赞
知道答主
回答量:57
采纳率:0%
帮助的人:57.6万
展开全部
首先:你的想法(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');
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式