qq_34266867 2020-08-19 06:35 采纳率: 0%
浏览 6283

Matlab中错误使用 bsxfun 两个输入数组的非单一维度必须相互匹配。

P=xlsread('pasy','b2:e26')'; %从excel表pasy读取输入数据赋予矩阵P
T=xlsread('pasy','f2:f26')'; %从excel表pasy读取输出数据赋予矩阵T
[Pn,ps_p]=mapminmax(P); %将矩阵P归一化,结果保存在矩阵Pn中
[Tn,ps_t]=mapminmax(T); %将矩阵T中数据进行归一化,结果保存在矩阵Tn中

%创建网络
net=newff(Pn,Tn,10,{'tansig','purelin'},'trainlm');

inputweights=net.IW{1,1}; %当前输入层权重
inputbias=net.b{1}; %当前输入层阈值
layerweights=net.LW{2,1}; %当前网络层权重
layerbias=net.b{2}; %当前网络层阈值
net.trainParam.goal=0.001; %目标误差
net.trainParam.epochs=10000; %最大迭代次数
net=train(net,Pn,Tn); %调用trainlm算法训练网络
minmax_var=minmax(P); %求解P矩阵每个行向量得最小值和最大值
minmax_target=minmax(T); %求解T矩阵每个行向量得最小值和最大值

save De_train net %将网络net存储至De_train中

save('result','net','minmax_var','minmax_target') %将net、minmax_var及minmax_target存储至result中

%从excel表pasy读取测试组得输入输出数据分别赋予矩阵P_test和T_test
P_test=xlsread('pasy','b27:e31');
T_test=xlsread('pasy','f27:f31');

[Pn_test]=mapminmax('apply',P_test,ps_p); %对矩阵P_test做与矩阵P相同得归一化,结果存在Pn_test中

结果运行不出来
错误使用 bsxfun
两个输入数组的非单一维度必须相互匹配。

出错 mapminmax.apply (line 6)
y = bsxfun(@minus,x,settings.xoffset);

出错 nnet7.process_fcn (line 28)
out1 = info.apply(in2,out2);

出错 mapminmax (line 38)
y = nnet7.process_fcn(mfilename,x,varargin{:});
有大佬知道怎么解决吗?????

展开全部

  • 写回答

3条回答 默认 最新

  • 梁博远 2021-10-20 14:08
    关注

    归一化对数据的要求与常识正好相反:
    即意思是要求归一化矩阵数据应该是每一列是一个样本,每一行是多个样本的同一维,即对于一个M*N的矩阵来说,样本的维度是M,样本数目是N,一共N列N个样本。
    简单来说就是把矩阵转置一下

    评论
  • hqqqqqqqqqqqqq 2021-01-13 01:27
    关注

    你好,请问问题解决了吗?我也遇到这个问题了

    评论
  • 关注
    评论
编辑
预览

报告相同问题?

手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部