Ich kann selbst etwas schreiben, indem ich Nulldurchgänge der ersten Ableitung oder etwas finde, aber es scheint eine ausreichend gemeinsame Funktion zu sein, um in Standardbibliotheken enthalten zu sein. Kennt jemand einen?
Meine spezielle Anwendung ist ein 2D-Array, aber normalerweise wird es zum Auffinden von Peaks in FFTs usw. verwendet.
Insbesondere bei solchen Problemen gibt es mehrere starke Spitzen und dann viele kleinere "Spitzen", die nur durch Rauschen verursacht werden und ignoriert werden sollten. Dies sind nur Beispiele; nicht meine tatsächlichen Daten:
1-dimensionale Peaks:
2-dimensionale Peaks:
Der Peak-Finding-Algorithmus würde den Ort dieser Peaks finden (nicht nur ihre Werte) und im Idealfall den wahren Inter-Sample-Peak finden, nicht nur den Index mit dem Maximalwert, wahrscheinlich unter Verwendung einer quadratischen Interpolation oder so.
Normalerweise interessieren Sie sich nur für ein paar starke Peaks, daher werden sie entweder ausgewählt, weil sie über einem bestimmten Schwellenwert liegen, oder weil sie die ersten n Peaks einer geordneten Liste sind, sortiert nach Amplitude.
Wie gesagt, ich kann so etwas selbst schreiben. Ich frage nur, ob es eine bereits vorhandene Funktion oder ein Paket gibt, von dem bekannt ist, dass es gut funktioniert.
Aktualisieren:
Ich habe ein MATLAB-Skript übersetzt und es funktioniert für den 1-D-Fall anständig, könnte aber besser sein.
Aktualisiertes Update:
sixtenbe hat eine bessere Version für den 1-D-Fall erstellt.
find_peaks
, also habe ich diese Antwort hinzugefügt , die für zukünftige Referenz nützlich sein könnte. (Ich bin sicher, dass Sie dies bereits seit 2009 gefunden haben, aber es ist für andere Leute + mich, wenn ich mir die Frage in ein paar Jahren noch einmal