私は等間隔の値の変数を持っています(仮定values=0:1e-3:1
)。values
一様にランダムな値に最も近い値とそれに対応するインデックスを取得したいと思います(仮定x=rand
)。
これは、私が実行[value,vIdx]=min(abs(values-x))
できる最も単純な最小化です。残念ながら、min
関数はデータの 1 つのプロパティ、つまり凸型を利用しません。すべてのインデックスを検索する必要はありません。以前のインデックスよりも小さくないインデックスが見つかるとすぐに、グローバルな最小値が見つかったからです。そうは言っても、開始する値からどれだけ離れているかに応じて遅くなるループの代わりに matlab min 関数を使用したくありません。ゴールデン セクションとして使用できる方法は多数ありますが、matlab fmincon を使用する方がそのmin
方法よりも高速かどうかはわかりません。
説明されている方法を使用するよりも速く必要な値を取得する方法のヒント/アイデアはありますmin
か? 時間のあるときにタイムパフォーマンスを確認しますが、誰かアプリオリに良い答えを知っている場合はお知らせください.
可能なアプリケーション: 最も近いグラフィック データにスナップする