【问题标题】:Matlab fminsearch using 'symfun'Matlab fminsearch 使用'symfun'
【发布时间】:2015-06-23 22:09:41
【问题描述】:

我正在使用此代码:

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 而不是函数句柄,因为我要添加几个函数。

【问题讨论】:

    标签: matlab optimization


    【解决方案1】:

    我建议查看fminsearch 的文档,尤其是给出的multi-dimensional examples。从matlabFunction 输出的y2 函数不满足这些要求。您可以手动更改它,也可以尝试'Vars' 选项(如this example)。您需要将初始猜测指定为列向量,但您的示例可以重写为:

    syms c p;
    y1 = symfun(c^2+p^2, [c,p]);
    y2 = matlabFunction(y1,'Vars',{[c;p]})
    [x,fval] = fminsearch(y2, [0;0])
    

    在这种情况下,它当然会返回简单的解决方案[0;0]。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-21
      • 2014-08-13
      • 2015-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多