有两个变量的 fminsearch
fminsearch with two variables
我正在尝试使用 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)
幸运的是,有一个小 hack 可以完成,您可以将额外的参数放在选项后面,如下所示: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
我正在尝试使用 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)
幸运的是,有一个小 hack 可以完成,您可以将额外的参数放在选项后面,如下所示: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