我正在使用此代码:
y1=symfun(c^2+p^2, [c,p]);
y2=matlabFunction(y1)
[x,fval]=fminsearch(y2, [0 0])
但它返回
使用makeFhandle/@(c,p)c.^2+p.^2时出错 没有足够的输入参数。
fminsearch错误(第191行)
fv(:,1)= funfcn(x,varargin {:});
我怎样才能解决这个问题?
请注意,我使用symfun
而非功能句柄,因为我添加了多个功能。
答案 0 :(得分:0)
我建议查看fminsearch
的文档,特别是multi-dimensional examples给出的文档。 y2
的{{1}}函数输出不符合这些要求。您可以手动更改它,也可以尝试'Vars'
选项(如this example中所示)。您需要将初始猜测指定为列向量,但您的示例可以重写为:
matlabFunction
在这种情况下,当然会返回简单的解决方案syms c p;
y1 = symfun(c^2+p^2, [c,p]);
y2 = matlabFunction(y1,'Vars',{[c;p]})
[x,fval] = fminsearch(y2, [0;0])
。