fminconの実行時のエラーについて

80 views (last 30 days)
narisawa
narisawa on 6 Mar 2018
Answered: michio on 6 Mar 2018
関数fminconのアルゴリズム、SQPを利用して非線形計画問題の最小化を行っているのですが、非線形の等式拘束条件の数が数千個になると、「インデックスが行列の次元を超えています」というエラーが返されて、最小化の計算ができません。
ここで、ふたつ質問があるのですが、
1,このエラーのインデックスとは何のことを指しているのでしょうか?
2,このエラーを回避する方法はありますか?
よろしくお願いします。

Accepted Answer

michio
michio on 6 Mar 2018
「インデックスが行列の次元を超えています」というエラー自体は、行列が定義された範囲外のインデックス(要素)を参照すると発生します。例えば下記のように 10x1 の配列を定義して、11番目の要素を参照する場合です。
a = zeros(10,1);
a(11)
条件の数でそのエラーが発生することは考えにくいのですが、まずはエラーがどこで発生しているかを確認したいですね。怪しいところにブレークポイントを設定してもよいですが、例えばコマンドウィンドウ上で
dbstop if error
と実行したのちにプログラムを走らせてみてください。そうするとエラーが発生した時点でプログラムがデバッグモードに入りますので、その時の値など直接確認してエラーの詳細を確認してみてください。詳細はこちら:
デバッグが終了したのちは
dbclear all
と実行しておけば、エラーが起きてもデバッグモードには入らなくなります。

More Answers (0)

Products

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!