我正在尝试使用fminsearch最小化5变量函数。我只想最小化两个变量的函数。 我试过以下,没有运气:
func = @(x,b) myfunction( x, y, z, a, b );
fminsearch(func,[x0,b0]);
x 是 N x M 维度的矩阵, b Y < strong> x Z 尺寸,因此尺寸不同。同样适用于起始条件 x0 和 b0 。
我已经看到了一些类似的问题,但我仍然无法解决这个问题。
运行脚本时我得到以下输出:
Error using horzcat
Dimensions of matrices being concatenated are not consistent.
答案 0 :(得分:1)
通常函数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