我尝试使用带有多个参数的fminsearch,但我似乎无法使用两个参数。我也试过在matlab中使用优化工具,但后来我得到了:
Optimization running.
Error running optimization.
Not enough input arguments.
我做什么:
fval = fminsearch(@g,[1 1])
函数g如下所示:
function r=g(x,y)
r=x.^3+3*x*y.^2+12*x*y;
end
但我明白了:
Error using g (line 2)
Not enough input arguments.
Error in fminsearch (line 190)
fv(:,1) = funfcn(x,varargin{:});
答案 0 :(得分:3)
您的函数g
需要两个输入,x
和y
,但是您提供了fminsearch
个输入,即向量[1 1]
。您需要重写它,以便fminsearch
只需要一个矢量作为输入,但然后该矢量被分成两个数字输入g
。
fminsearch(@(v) g(v(1),v(2)),[1 1])
这使得一个匿名函数将一个向量作为输入(v
),然后使用第一个元素(v(1)
)作为g
的第一个输入,第二个元素作为第二个输入。