Mogę coś napisać samodzielnie, znajdując przecięcia zerowe pierwszej pochodnej lub czegoś w tym rodzaju, ale wydaje się, że jest to dość powszechna funkcja, którą można włączyć do standardowych bibliotek. Czy ktoś o jednym wie?
Moja konkretna aplikacja to tablica 2D, ale zwykle byłaby używana do znajdowania pików w FFT itp.
W szczególności w tego rodzaju problemach występuje wiele silnych szczytów, a następnie wiele mniejszych „szczytów”, które są spowodowane przez szum, który należy zignorować. To są tylko przykłady; nie moje rzeczywiste dane:
1-wymiarowe piki:
2-wymiarowe piki:
Algorytm znajdowania pików znalazłby lokalizację tych pików (nie tylko ich wartości), a idealnie by znalazłby prawdziwy pik między próbkami, a nie tylko indeks z wartością maksymalną, prawdopodobnie przy użyciu interpolacji kwadratowej lub czegoś podobnego.
Zwykle zależy Ci tylko na kilku mocnych pikach, więc zostaną wybrane albo dlatego, że przekraczają pewien próg, albo dlatego, że są pierwszymi n pikami uporządkowanej listy, uszeregowanymi według amplitudy.
Jak powiedziałem, sam wiem, jak napisać coś takiego. Pytam tylko, czy istnieje wcześniej istniejąca funkcja lub pakiet, o którym wiadomo, że działa dobrze.
Aktualizacja:
I przetłumaczony skrypt MATLAB i działa przyzwoicie dla przypadku 1-D, ale mogłoby być lepiej.
Zaktualizowana aktualizacja:
sixtenbe stworzył lepszą wersję dla obudowy 1-D.
find_peaks
, więc dodałem tę odpowiedź, która może być przydatna w przyszłości. (Jestem pewien, że już to znalazłeś od 2009 roku, ale to dla innych ludzi + dla siebie, kiedy zadam sobie to pytanie ponownie za kilka lat!)