• 締切済み

MATLABの極値を順に求める

例えばsinc関数のような極値が複数ある関数の場合(fとします) 極値の大きい順に取り出したいのですが [A B] = max(f)とやると 最大(極値Aとそのとき変数B)のものは取り出せるのですが 2番目以降を取り出すにはどうすればいいのでしょうか? 最初に取り出したmaxを配列から除いてmax(f)としても すぐ隣の値が出てしまい次の極値を求めることができません。 極大値のA Bどちらも取り出したいのですが 関数はすべて正の値をとるものとしてお願いします。 (実際には極大値の中から2番目に大きいものまでという様な使い方をしたいです。)

みんなの回答

回答No.1

初心者によるMATLABメモ(極大値・極小値を取り出す)↓ http://sach1o.blog80.fc2.com/blog-entry-34.html こちらのページを参考にしてみてはどうでしょうか? ちょっと応用して,使用するデータにx軸を0.0001のように非常に細かい値(もしくはx軸の最小単位で),y軸にそのときのsinc関数の値を対応させ,上記のページと同様の手法でデータを作成し,極値を求めます. そのとき,極値のインデックス(質問者様でいう極値Aの変数B)も同時に導出できるので,あとはsort関数を使い,並び替えることで求められるのではないでしょうか? あまり頭のいい方法ではないかもしれませんが…

参考URL:
http://sach1o.blog80.fc2.com/blog-entry-34.html

関連するQ&A