局所最小値のインデックスの調べ方

下記のようなグラフの局所最小値で0より大きいところ(=2番目に小さい値)を調べています.
1つ目にプロットした局所最小値の値は検索できたのですが,インデックスを検索する方法がわかりません.
ご教示いただけないでしょうか.

 Akzeptierte Antwort

Atsushi Ueno
Atsushi Ueno am 28 Aug. 2021
Bearbeitet: Atsushi Ueno am 28 Aug. 2021

2 Stimmen

下記コード例3行目のfind関数で局所最小値のインデックスを検索する事が出来ます。
x = 1:100; A = peaks(100); A = A(50,:); % サンプルデータ
TF1 = islocalmin(A) & (A > 0); % 局所最小値の検出
index = find(TF1) % 局所最小値のインデックスを検索する
index = 56
plot(x,A,x(TF1),A(TF1),'r*');
text(index,A(index),cellstr(arrayfun(@(x) ['\leftarrow index:' num2str(x)],index,'uni',false)));

3 Kommentare

Yumi Iwakami
Yumi Iwakami am 28 Aug. 2021
ご教示ありがとうございます.
説明不足で申し訳ありません.
すべての局所最小値のインデックスの求め方は分かったのですが,1つめの局所最小値のインデックス(あげていただいた例では27のほう)だけ求めたいのですが方法はありますでしょうか?
私の扱っているデータだと,0のところも局所最小値として求められてしまうので0より大きいところをもとめようとしています.
Atsushi Ueno
Atsushi Ueno am 28 Aug. 2021
>私の扱っているデータだと,0のところも局所最小値として求められてしまうので0より大きいところをもとめようとしています.
局所最小値の検出結果に条件(元データが0より大きい事)を加えました。私の準備したサンプルデータでは、index:27の方は条件に外れる方だったので、56の方を表示する結果になりました。
TF1 = islocalmin(A); % 局所最小値の検出(変更前)
TF1 = islocalmin(A) & (A > 0); % 局所最小値の検出(変更後)
Yumi Iwakami
Yumi Iwakami am 29 Aug. 2021
aありがとうございます.解決しました.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Produkte

Version

R2021a

Community Treasure Hunt

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

Start Hunting!