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

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

 Risposta accettata

Shunichi Kusano
Shunichi Kusano il 6 Nov 2024

0 voti

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

6 Commenti

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

Accedi per commentare.

Più risposte (0)

Prodotti

Release

R2023a

Community Treasure Hunt

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

Start Hunting!