Matlab fminsearch使用' symfun'

时间:2015-06-23 22:09:42

标签: matlab optimization

我正在使用此代码:

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而非功能句柄,因为我添加了多个功能。

1 个答案:

答案 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])