二次元データのピーク値の検出について

上図のような二次元のデータがある場合に、1~3のようにピーク値を検出する方法はありますでしょうか。
頂点のとがり方や距離はデータ毎に異なるために、閾値を調整できるような手法があるとベストです。
データファイルを添付いたします。ご助言お願いいたします。

 採用された回答

Shunichi Kusano
Shunichi Kusano 2024 年 11 月 6 日

0 投票

islocalmax2 という関数があります。いろいろしきい値調整はできますので、一度試してみるといいかもしれません。

6 件のコメント

HanaHana
HanaHana 2024 年 11 月 6 日
ありがとうございます。早速試そうと思ったのですが、所有のバージョンが2023aのため使えませんでした。1次元のisolocalmaxをうまく利用すれば代替できますでしょうか?
Shunichi Kusano
Shunichi Kusano 2024 年 11 月 7 日
リリース情報記載いただいてましたね。確認しておらずすみません。
そうしますとおっしゃる通りislocalmaxの活用が良さそうです。
行方向と列方向それぞれにスキャンするように適用して、共通して検出できた点を取得する感じでしょうか。斜め方向の情報を加味できないので不完全ではありますが、おおよそ同じような結果になりそうな気はします。
Hiro Yoshino
Hiro Yoshino 2024 年 11 月 7 日
maxk を使うというのもアリかなと思いました
HanaHana
HanaHana 2024 年 11 月 7 日
isolocalmaxですべての行列に行うためにfor文化すると非常に重たくなってしまいます。何か代替案ありますでしょうか?
maxkですと、同じ山の中にある高値を拾ってしまうため、うまくいっておりません。
Shunichi Kusano
Shunichi Kusano 2024 年 11 月 7 日
編集済み: Shunichi Kusano 2024 年 11 月 10 日
ピークの大きさはこの値以上にはなる、という値があれば(もしなければ全体最大値の60%などの決め方も有り得るかと思います)、
  1. findでその行番号、列番号を抽出
  2. uniqueで重複削除
  3. for文で抽出した行と列のみ狙う
という流れでだいぶ計算量は削減できそうですがいかがでしょうか。
HanaHana
HanaHana 2024 年 11 月 11 日
具体的なアイデアありがとうございます。
うまくいきそうなため一度試していみたいと思います。ありがとうございました。

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

製品

リリース

R2023a

タグ

質問済み:

2024 年 11 月 6 日

コメント済み:

2024 年 11 月 11 日

Community Treasure Hunt

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

Start Hunting!