Я могу написать что-нибудь сам, найдя нулевые пересечения первой производной или что-то в этом роде, но это кажется достаточно распространенной функцией, которую можно включить в стандартные библиотеки. Кто-нибудь знает об этом?
Моим конкретным приложением является 2D-массив, но обычно он используется для поиска пиков в БПФ и т. Д.
В частности, в такого рода проблемах есть несколько сильных пиков, а затем множество более мелких «пиков», которые просто вызваны шумом, который следует игнорировать. Это всего лишь примеры; не мои фактические данные:
1-мерные пики:
2-мерные пики:
Алгоритм обнаружения пиков найдет расположение этих пиков (а не только их значения) и в идеале найдет истинный пик между выборками, а не только индекс с максимальным значением, возможно, с использованием квадратичной интерполяции или чего-то еще.
Обычно вас интересуют только несколько сильных пиков, поэтому они будут выбраны либо потому, что они превышают определенный порог, либо потому, что они являются первыми n пиками упорядоченного списка, ранжированного по амплитуде.
Как я уже сказал, я знаю, как написать что-то подобное сам. Я просто спрашиваю, есть ли уже существующая функция или пакет, которые хорошо работают.
Обновить:
Я перевел скрипт MATLAB, и он хорошо работает для 1-D случая, но может быть и лучше.
Обновленное обновление:
Sixtenbe создал лучшую версию для 1-D случая.
find_peaks
, поэтому я добавил этот ответ, который может быть полезен для справок в будущем. (Я уверен, что вы уже нашли это с 2009 года, но это для других людей + меня, когда я снова задам себе этот вопрос через несколько лет!)