Mit findpeaks und minpeakdistance in MATLAB zu finden Gipfel, getrennt durch die Distanz eher als index
Ich versuche, den x-Koordinaten der peaks in eine MATLAB-Figur (Beispiel im Anhang). Ich habe mit findpeaks
, aber es scheint nicht, wie die Tatsache, dass ich ' m Plotten Punkte anstelle von Linien.
Bin ich nicht immer haben zwei Spitzen. Manchmal werde ich haben drei, manchmal werde ich auch eine haben. Mehrere Gipfel werden immer getrennt durch mindestens 1/4 der Strecke x, und die Gipfel werden immer mindestens zweimal den Geräuschpegel.
Hier ist, was ich erwarten würde, funktionieren würde:
[pks,locs] = findpeaks(yData,...
'SortStr','descend',...
'MinPeakDistance',floor(range(xData)/4),...
'MinPeakHeight',floor(max(yData)/2)...
)
Anstatt zwei Spitzen, die, ich, vier alle gebündelt um den ersten Höhepunkt:
>> locs
locs =
6774 166785 326792 486799
>> xData(locs)
ans =
-96780.787939025 -96770.1800919265
-96770.8959353367 -96771.6117787468
Ich gehe davon aus, dass MinPeakDistance arbeitet auf die im xData-Indizes, anstatt die Daten selbst. Wie bekomme ich die Abstände zwischen den peaks statt der Abstand zwischen den Indizes der Gipfel?
InformationsquelleAutor Nick Sweet | 2013-08-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
findpeaks
weiß nichts über die x-Koordinaten, oder was Sie gezeichnet haben. Sie müssen angebenMinPeakDistance
in Bezug auf die Indizes. Hier ist ein Beispiel:6774 166785 326792 486799
sind alle um die gleiche xData), muss ich Sortiere meine xData in geordnete indices zu finden, bevor die Spitzen, dann die Spitzen, dann die Karte meiner bestellten Indizes wieder auf die ursprünglichen Indizes?Ja. Finden Gipfeln gibt Indizes, und Sie müssen einen Weg finden, interpretieren Sie in Bezug auf Ihren x-Koordinaten.
InformationsquelleAutor Molly
Obwohl ich angenommen habe Molly ' s Antwort, die ich gefunden habe, meine eigenen, die etwas weniger Aufwand, aber weniger elegant:
InformationsquelleAutor Nick Sweet