我正在尝试使用 fminsearch 最小化 5 变量函数。我只想最小化两个变量的函数。我尝试了以下方法,但没有运气:
func = @(x,b) myfunction( x, y, z, a, b );
fminsearch(func,[x0,b0]);
x 是 NxM 维的矩阵,b 是 YxZ 维的矩阵,所以维数不同。起始条件 x0 和 b0 相同。
我看到过一些类似的问题,但我仍然无法解决这个问题。
运行脚本时得到以下输出:
Error using horzcat
Dimensions of matrices being concatenated are not consistent.
通常函数fminsearch
只允许三个输入:函数句柄、初始值向量和优化选项,如下所示: fminsearch(@fun,x0,options)
幸运的是,有一个小技巧可以做,你可以在选项后面放置额外的参数,就像这样:fminsearch(@fun,[x0 b0],options,z,a,b)
。
如果您不使用任何选项,则应如下所示:fminsearch(@fun,[x0 b0],[],z,a,b)
.
请记住,在函数中,您应该解压缩变量 a
和 b
,如下所示:
function[obj]=func(x0,z,a,b)
x=x0(1)
y=x0(2)
%rest of the function
end