0

fminbnd次のように、係数の正当な定義域の値に従って、関数の下限と上限を使用しています。

[x,fval,exitflag] = fminbnd(@(x) minimize_me(sill, x(1), x(2), x(3), cov), [x1l x2l x3l], [x1u x2u x3u], opts);

ここで、[x1l x2l x3l]および[x1u x2u x3u]は、最適化された係数の下限と上限を表すベクトルです。私の問題のドメインは次のように与えられます:

0<=x1l<=5
0<=x1u<=5

0<=x2l<=5
0<=x2u<=5

0<=x3l<=180
0<=x3u<=180

奇妙な問題は、ドメイン内のいくつかの値を選択しても、以下に示すエラーが発生することです。

??? Error using ==> mtimes
Inner matrix dimensions must agree.

Error in ==> fminbnd at 271
    x = xf + si * max( abs(d), tol1 );

たとえば、次の場合にエラーが発生します。

[x1l x2l x3l], [x1u x2u x3u] = [0 0 0], [5 5 180]または[x1l x2l x3l], [x1u x2u x3u] = [1 1 0], [5 5 180]または[x1l x2l x3l], [x1u x2u x3u] = [1 2 0], [5 5 180]など。

[x1l x2l x3l], [x1u x2u x3u] = [5 5 0], [5 5 180]ただし、[x1l x2l x3l], [x1u x2u x3u] = [3 0 0], [3 5 180]などを選択してもエラーは発生しません。

4

1 に答える 1

4

ドキュメントによると、引数として単一のスカラーをとる関数でfminbndのみ機能します。

fminsearchbndファイル交換を見てください:

http://www.mathworks.com/matlabcentral/fileexchange/8277-fminsearchbnd

于 2012-11-20T05:13:13.357 に答える