Algorytm wyszukiwania pików dla Pythona / SciPy

Mogę napisać coś samemu, znajdując zero skrzyżowań pierwszej pochodnej lub czegoś takiego, ale wydaje się, że jest to funkcja wystarczająca do powszechnego dołączenia do standardowych bibliotek. Ktoś wie o jednym?

Moja konkretna aplikacja to tablica 2D, ale zwykle byłaby wykorzystywana do znajdowania pików w FFT itp.

W szczególności w tego rodzaju problemach istnieje wiele silnych pików, a następnie wiele mniejszych „pików”, które są spowodowane przez hałas, który należy zignorować. To są tylko przykłady; nie moje rzeczywiste dane:

1-wymiarowe piki:

2-wymiarowe piki:

Algorytm znajdowania pików znajdowałby położenie tych pików (nie tylko ich wartości), a idealnie znalazłby prawdziwy pik między próbkami, a nie tylko indeks o maksymalnej wartości, prawdopodobnie używającinterpolacja kwadratowa lub coś.

Zazwyczaj zależy ci tylko na kilku silnych szczytach, więc albo zostaną wybrane, ponieważ są powyżej pewnego progu, albo dlatego, że są pierwszymin szczyty uporządkowanej listy, uszeregowane według amplitudy.

Jak już powiedziałem, wiem, jak sam 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łumaczył skrypt MATLAB i działa przyzwoicie w przypadku 1-D, ale może być lepszy.

Zaktualizowana aktualizacja:

sixtenbestworzyłem lepszą wersję w przypadku 1-D.

questionAnswers(8)

yourAnswerToTheQuestion