有两个变量的 fminsearch

fminsearch with two variables

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

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

xNxM 维的矩阵,b 具有 YxZ 维度,因此维度不同。与起始条件 x0b0 相同。

我看到有类似的问题问过,但是还是解决不了这个问题

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

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

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

幸运的是,有一个小 hack 可以完成,您可以将额外的参数放在选项后面,如下所示: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