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

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

 채택된 답변

Atsushi Ueno
Atsushi Ueno 2021년 8월 28일
편집: Atsushi Ueno 2021년 8월 28일

2 개 추천

下記コード例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

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

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 Logical에 대해 자세히 알아보기

제품

릴리스

R2021a

질문:

2021년 8월 27일

댓글:

2021년 8월 29일

Community Treasure Hunt

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

Start Hunting!