2017-04-16 13 views
0

私はfminsearchで5変数関数を最小化しようとしています。私は2つの変数の関数を最小限に抑えたいだけです。 私は運なしで、次のことを試みた:2つの変数を持つfminsearch

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

XN X M寸法、及びY X Z寸法を有するBので、異なる大きさの行列であります。開始条件と同じx0b0です。

似たような質問がありましたが、この問題は解決できません。

スクリプトを実行しているとき、私は次の出力を得る:

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

答えて

1

通常機能fminsearchは、3つの入力のみできます:関数ハンドル、初期値ベクトルおよび最適化するためのオプション、のようなもの:fminsearch(@fun,x0,options)

Fortunatelly、小さなハックがあります。オプションの後ろに余分なパラメータを入れることができます:fminsearch(@fun,[x0 b0],options,z,a,b)

オプションを使用していない場合は、fminsearch(@fun,[x0 b0],[],z,a,b)のようになります。答えを

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

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

%rest of the function 

end 
+0

ありがとう:

は、関数の内部で使用すると、あなたの変数ab、のようなものを解凍する必要があることを忘れないでください!私は変数を展開する最後の部分を得ていません。 –

+0

します。私は運がないあなたの解決策を試しました。行列xとbは異なるサイズであるため、それらをセルに格納しました。このような; c1 {1} = x、c1 {2} = bである。それから私は次のスクリプトを実行した。 func = @(c1)myfunction(c1、y、z、a); fminsearch(func、[c1 {1} c1 {2}]);.以前と同じエラーメッセージが表示されます。 –

+0

私は理解しているかどうかを見てみましょう、変数として2つの行列を使用してobjetive関数を最小限にしようとしていますか? –

関連する問題