qq_34266867 2020-08-19 14:35 采纳率: 0%
浏览 5819

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 22:08
    关注

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

    评论

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog