【问题标题】:MATLAB fminsearch with varargin带可变参数的 MATLAB fminsearch
【发布时间】:2014-09-12 21:58:03
【问题描述】:

MATLAB documentation for fminsearch 不包含类似的表单

x = fminsearch(fun,x0,options,varargin)

但是这样的形式是存在的;我已经用过了。例如:

function[z] = myFunction(x,a,b,c)
    z = a * x^2 + b * x + c;
end

x0 = 0.0;
a = 2;
b = -6;
c = 10;
[x,z] = fminsearch(@myFunction,x0,[],a,b,c)

文档中省略了这一点是否有一些重要原因?是否有另一个很好的参考来描述这一点,我可以指出我的学生? (有一些文档here,但这并不是我真正想要的。)

【问题讨论】:

  • MATLAB 中有很多未记录的点点滴滴。其中一些是因为它正在开发和测试中,其中一些还没有进入文档,还有一些只是偷偷溜进来。我已经使用过这种形式的 fminsearch 很多次,发现它更容易比文档中推荐的方法使用。有一个完整的blog 专门介绍这些隐藏的“功能”。
  • 谢谢,很高兴知道这一点。
  • 仅供参考,这种已弃用的形式是 Matlab 旧版本的遗迹。它只是出于向后兼容性的原因而保留。 ODE 套件中的函数仍然存在相同的形式(例如,ode45)。然而,使用anonymous functions to parametrize your functions 会更好,就像@ChrisTaylor 的回答一样——生成的代码可能会更快并且符合当前的标准/文档。

标签: matlab arguments fminsearch


【解决方案1】:

我不知道为什么文档中没有这种形式的调用 fminsearch - 您必须询问为 MathWorks 工作的人。但是,如果你想调用带有额外参数的函数并符合文档,你可以这样做

x0 = 0.0;
a = 2;
b = -6;
c = 10;

[x,z] = fminsearch(@(x) myFunction(x,a,b,c), x0);

【讨论】:

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