問題タブ [fminsearch]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
517 参照

matlab - 複雑な関数でフィッティング

実験データに適合するモデルを見つけなければなりません。問題は、モデルが複雑な関数であることです。

実部と虚部の両方について、モデルと実験データの間の誤差を最小限に抑える必要があります。fminsearch を使用して、エラーを最小限に抑える関数のパラメーターを見つけています。その機能を使うために、実部と虚部を分けました。

私の問題は、使用しなければならないエラーの機能がわからないことです。

今まで私は使用しています

しかし、得られたモデルは、少なくとも虚部については、実験データをまったく満たしていません。初期条件を何度か変更しましたが、虚部の適合性を改善することはできません。虚数部の大きさは、実数部の数分の 1 です。それが理由でしょうか?

0 投票する
2 に答える
314 参照

matlab - fminsearch を使用して、ローカル最小化とその値での最小値を見つけます

fminsearch関数の入力引数が不足しているというエラーが表示されます。

私の機能に何か問題がありますか?他のコマンドで入力関数として使用したいときはいつでもエラーが発生します。

0 投票する
1 に答える
976 参照

matlab - matlab fminconエラー「ソルバーが途中で停止しました」

特定のノットに対して 6 DOF マニピュレータの特定のパスがあります。パス(自由度、結び目)

各ジョイント間に 3 次スプラインを生成し、各時間間隔を h(i) として定義し、最小の h 値を見つけようとしましたh(1)+h(2)+h(3)+h(4)+h(5)

その問題を解決するために、私はコードを書きました:

コードを実行すると、次のように表示されます。

ソルバーが途中で停止しました。反復制限 options.MaxIter = 1000 (選択された値) を超えたため、fmincon は停止しました。

5 回目の反復後、f(x) の値は変化せず、結果は次のようになります。

その背後にある理由についてはわかりません。手伝っていただけませんか?

0 投票する
1 に答える
212 参照

matlab - Matlab で最適な波形の重なりを見つける

2 つの波形間の最適なオーバーラップを見つける方法の例をいくつか見ようとしています。ここにいくつかの例のデータがあります。

ここに画像の説明を入力 ここに画像の説明を入力

x波形の-値と -値の範囲が異なることに注意してくださいxx2具体的には、 と のみを変更したいと思いy2ます。値はx相対的な間隔を維持する必要があります (つまり、任意の 2 つの連続する x 値 (上記のx2例では1) の間の距離は同じでなければなりませんが、最適なオーバーラップを見つける際に、新しい距離は元の距離とは異なる可能性があります)。 . つまり、2 番目の波形の「形状」は同じままでなければなりません。

一般に、次の 2 つの手順を実行する必要があります。

  1. x2新しい値 を割り当てる
  2. y2値をグローバルな係数でスケーリングします

最適なオーバーラップを、2 つの波形間の最小化された減算として定義したいと思います。つまり、最初のx値 (x1およびの最小値x2) から最後の値 (およびxの最大値) まで、2 つの波形の減算は最小になります。ポイント間を補間することにより、波形が異なる値を持っていても、波形を減算できることに注意してください。データが存在しない場合、減算には基本的にいずれかの波の a を含める必要があります。x1x2x0

何か案は?前もって感謝します!

0 投票する
0 に答える
771 参照

matlab - fminsearch の反復ごとに関数で計算された値を保存する

を使用して関数の最小値を見つけたい

今、反復ステップごとに、関数「esm6」が計算して配列に保存する値が必要です。私は次のことを試しました:私が書いた関数の最初の行で

fminsearch の反復ステップをカウントする反復変数を持つ。そして後で必要な値をキャッチするために使用しました

次の関数呼び出しで identi-struct の新しい値を確実に使用するために、関数の最後に次のように記述しました。

残念ながら、私がやりたかったことはできません。誰でもこれで私を助けることができますか?

編集:
出力関数を使用して、別の試みを行いました。オプションを次のように拡張します。

しかし、今の問題は、この楽しみをどこに置くべきか分からないことです。outfun は次のようになります。

ここでの問題は、スクリプトであるため、fminsearch を呼び出すファイルに入れることができないことです。outputfunction を別の .m-function ファイルに入れると、esm6 関数の変数にアクセスできません。そして、それをesm6-functionファイルに追加すると、matlabは関数を見つけることができず、

??? ==> feval の使用エラー タイプ「struct」の入力引数に対する未定義の関数またはメソッド「outfun」。

0 投票する
0 に答える
550 参照

matlab - 反復ごとの fminsearch の関数呼び出しの数を取得する

このコードは、esm6 関数のローカルの最小値を見つけ、「表示」オプションにより、このような文字列を出力します

反復 Func-count 分 f(x) 手順
0 1 36.9193
1 5 35.9815 初期シンプレックス
2 7 35.4924 契約内
3 9 35.4924 契約内
4 11 33.0085 拡張

したがって、コマンド ウィンドウで、反復ステップごとに関数 Count を取得します。fminsearch によって作成される構造体outputには、その中に func-count の合計量しかありません。コマンドウィンドウに出力されたすべての情報を出力構造にも受け取る方法はありますか?

編集:
私は解決策にかなり近いと思います。私はこの出力関数を書きました:

http://de.mathworks.com/help/matlab/math/output-functions.htmlにより、これは機能するはずですが、実際、matlab は私に、

??? 存在しないフィールド 'funcCount' への参照。

なぜこれが起こるのですか?