2017-04-16 81 views
0

我想用fminsearch最小化5变量函数。我只想将两个变量的函数最小化。 我曾尝试以下,没有运气:带两个变量的fminsearch

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

XÑ X 中号尺寸的矩阵,并且bý X Ž尺寸,从而不同尺寸的。相同的起始条件x0b0

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

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

回答

1

通常功能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 
+0

感谢您的回答!我不完全解开变量的最后部分。 –

+0

我会的。我试过你的解决方案,没有运气。由于矩阵x和b的大小不同,我将它们存储在一个单元中。喜欢这个; c1 {1} = x和c1 {2} = b。然后我跑了下面的脚本; func = @(c1)myfunction(c1,y,z,a); fminsearch(func,[c1 {1} c1 {2}]);.我仍然像以前一样得到相同的错误信息。 –

+0

让我看看我是否理解,你是否试图通过使用两个矩阵作为变量来最小化目标函数? –