Matlab 双变量fminsearch

Matlab 双变量fminsearch,matlab,fminsearch,Matlab,Fminsearch,我试图用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

我试图用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,选项

幸运的是,有一个小技巧是可以做到的,你可以把额外的参数放在选项后面,如下所示:fminsearch@fun,[x0 b0],选项,z,a,b

如果未使用任何选项,则应如下所示:fminsearch@fun,[x0 b0],[x0 b0],[x0 b0],[x0 b0],[x0 b0],[x0 b0],[x0 b0],[x0 b0],[x0 b0],[x

请记住,在函数中,您应该解压缩变量a和b,类似于:

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

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

%rest of the function

end

谢谢你的回答!我还没有完全理解解包变量的最后一部分,我会的。我试过你的解决办法,但没有成功。因为矩阵x和b的大小不同,所以我将它们存储在一个单元格中。这样地;c1{1}=x和c1{2}=b。然后我运行以下脚本;func=@c1 myfunction c1,y,z,a;fminsearchfunc[c1{1}c1{2}];。我仍然像以前一样收到同样的错误消息。让我看看我是否理解,你是否试图通过使用两个矩阵作为变量来最小化目标函数?是的,我是。当然,我把矩阵放在一个单独的矩阵上,然后把它附加到一个单独的变量上。这解决了我的问题。