2017-04-16 84 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

讓我看看我是否理解,你是否試圖通過使用兩個矩陣作爲變量來最小化目標函數? –