1

lsqnonlin 関数を使用して、matlab でパラメーター推定を行っています。

私の仕事では、グラフをプロットして、lsqnonlin 反復の観点からエラーを表示する必要があります。そのため、lsqnonlin の各時点でどの反復が実行されているかを知る必要があります。lsqnonlin の実行中に反復回数を抽出する方法を教えてください。

ありがとう、

4

3 に答える 3

1

自分で使用したことはありませんが、のヘルプを見ると、ソルバーの反復ごとに呼び出されるカスタム出力関数lsqnonlinを設定するオプションがあるようです。仕様を見ると、値とget が関数に渡されているように見えますが、これはおそらくあなたが興味を持っていることです。optimValues.iterationoptimValues.fval

したがって、適切な署名を使用して独自の関数を定義する必要があります。希望に応じて、この関数はコマンドラインに出力し、プロットを作成し、中間結果をベクトルに保存します。最後に、この関数を次のように渡す必要があります。ソルバーへの関数ハンドル: lsqnonlin(..., 'OutputFcn', @your_outputfun).

于 2013-09-25T10:43:24.910 に答える
1

'display'またはのいずれかに'iter'オプションパラメータ設定を渡したい'iter-detailed'

http://www.mathworks.com/help/optim/ug/lsqnonlin.html#f265106

于 2013-09-25T10:20:39.247 に答える
0

これを行う簡単な方法は次のとおりです。

  1. 少ない回数 (最大) の反復から開始する
  2. 結果を得る
  3. 反復回数を増やす
  4. 結果を得る
  5. 最大反復回数を使用する場合 手順 3 に進みます

これは、パフォーマンスが大きな問題ではない場合、ほとんどの場合にお勧めします。

ただし、このようにする余裕がない場合はedit lsqnonlin、反復回数が見つかるまで掘り下げてみてください。次に、関数を変更して、その時点で必要な結果を確実に保存します。(後で元に戻すことを忘れないでください)。

良いニュースは、関連するすべてのファイルが編集可能であるように見えることです。悪いニュースは、現在の反復回数をどこで確認できるかが明確でないことです。クイック検索で にたどり着きましたがfminbnd、これが実際に によって使用されていることを確認できませんでしたlsqnonlin

于 2013-09-25T10:20:28.863 に答える