0

我正在尝试使用 fminsearch 最小化一个 5 变量函数。我只想最小化两个变量的函数。我尝试了以下方法,但没有运气:

func = @(x,b) myfunction( x, y, z, a, b ); 
fminsearch(func,[x0,b0]);

xN x M维度的矩阵,而b具有Y x Z维度,因此维度不同。相同的起始条件x0b0

我看过一些类似的问题,但我仍然无法解决这个问题。

运行脚本时,我得到以下输出:

Error using horzcat
Dimensions of matrices being concatenated are not consistent.
4

1 回答 1

2

通常该函数fminsearch只允许三个输入:函数句柄、初始值向量和优化选项,例如:fminsearch(@fun,x0,options)

幸运的是,有一个小技巧可以做,你可以在选项后面加上额外的参数,像这样fminsearch(@fun,[x0 b0],options,z,a,b)

如果你没有使用任何选项,它应该是这样的:fminsearch(@fun,[x0 b0],[],z,a,b).

请记住,在函数内部,您应该解压缩变量ab,例如:

function[obj]=func(x0,z,a,b)

x=x0(1)
y=x0(2)

%rest of the function

end
于 2017-04-16T02:14:33.347 回答