由matlabFunction()创建的函数中出现了重塑()错误

9次浏览(最近30天)
博季诺夫Aronov
博季诺夫Aronov 2021年8月21日
回答: 博季诺夫Aronov2021年9月3日23:47
matlabFunction () 为我创造了 AmplAndDers () 用于 fminunc () .第一个目标函数求值失败:
错误使用重塑
元素的数量不能改变。使用[]作为大小输入之一,可以自动计算该维度的适当大小。
AmplAndDers错误(第93行)
赫斯=重塑([t2 * t3 * t4。…。* (3.0. / 4.0)],[4 4]);
函数的签名为:
function [Ampl,GradA,Hess] = AmplAndDers(C1_0,C2_0,R1_0,R2_0,w,x1,x2,x3,x4)
我叫它a w 是一个数组。另外两个输出正确返回。我不明白上述建议是什么意思:
使用[]作为大小输入之一,可以自动计算该维度的适当大小。
如果我手动更改以上 重塑() 以:
…*(3.0. / 4.0)]、[4,4、长度(w)]);
程序运行正常。
如何避免人工干预?
4评论
博季诺夫Aronov
博季诺夫Aronov 2021年8月24日
哦。电话来了:
function [x, fval] = optimizfilter (A0, f, x0)
options = optimoptions('fminunc','Algorithm','trust-region',' specificobjectivegradient ',true, HessianFcn','objective');
[x,fval,exitflag,output] = fminunc(@Target, [1,1,1,1], options)
函数y = Target(x)
[aCurrent, GradW HessW] = AmplAndDers (x0 x0 (1), (2), x0 (3), x0 (4), f, x (1) x (2) x (3) x (4));
...
结束
结束

登录评论。

接受的答案

博季诺夫Aronov
博季诺夫Aronov 2021年9月3日23:47
该误差为MATLAB所知,并将在今后进行修正

答案(1)

KSSV
KSSV 2021年8月21日
阅读 重塑 并理解它。错误是明显的,你试图创建额外的元素比目前的数组在重塑。
例子:
A = rand(1,25);
B = rehae (A,5,5);% 5*5 = 25,没有错误相同的元素存在
C =重塑(A,6,5);% 6*5 = 30,误差为A为30个元素。
1评论
博季诺夫Aronov
博季诺夫Aronov 2021年8月21日
的身体 AmplAndDers () 函数和 重塑() 其中的调用代码由 matlabFunction () .我看不出怎么看文档 重塑() 也许能帮到我。是的,错误确实很明显。

登录评论。

社区寻宝

在MATLAB中心找到宝藏,并发现社区如何可以帮助你!

开始狩猎!