2016-11-03 6 views
0

下のヒストグラムで最も高いピーク点を探したいと思います。例えば、図に見られるように、4つのピーク点を選択する必要がありますが、ヒストグラムを見てからこの4点の情報が得られるので、コーディングでそれを見つける必要があります。この問題を解決する方法やアルゴリズムはありますか?Matlabで最高の未知数のピーク点を見つけよう

enter image description here

私は手動で選択した場合、私はこの問題を解決することができます。しかし、最高のピークポイントの数はわかりません。実際の主な問題は、しきい値を決定することです。

[pks,locs] = findpeaks(difference) 
[sortedX,sortingIndices] = sort(difference,'descend'); 
locsize=size(locs,2); 
counter=1; 
peak_order=[]; 
while counter<5 
    for j=1:locsize 
     if sortingIndices(counter)==locs(j)    
      peak_order(counter)=sortingIndices(counter); 
      counter=counter+1; 
     end 
    end 
end 

sorted_peak_order=sort(peak_order)enter code here 
+0

単純にしきい値を追加しないでください。 – obchardon

+0

サイズを小さくして配列をソートし、最初の4つの要素を取ります。 – Hoki

+0

しかし、問題は「4」または任意のしきい値を知らないことです。 – user951487

答えて

2

findpeaks検索結果を絞り込むことa series of optionsを持っています。あなたのケースでは、 'MinPeakProminence'オプションが有効です。その隣人へのピークの顕著さに応じてそれはしきい値。

[pks,locs] = findpeaks(difference,'MinPeakProminence',0.25*max(difference)) 
+0

ありがとう@Laure – user951487

関連する問題