Алгоритм поиска пика для Python / SciPy
Я могу написать что-то сам, найдя пересечение нуля первой производной или чего-то еще, но это кажется достаточно общей функцией, которая будет включена в стандартные библиотеки. Кто-нибудь знает об этом?
Мое конкретное приложение - это двумерный массив, но обычно он используется для поиска пиков в БПФ и т. Д.
В частности, в таких проблемах есть много сильных пиков, а затем много меньших »пики» которые просто вызваны шумом, который следует игнорировать. Это всего лишь примеры; не мои фактические данные:
1-мерные пики:
2-мерные пики:
Алгоритм обнаружения пиков найдет местоположение этих пиков (а не только их значения) и в идеале найдет истинный пик между выборками, а не только индекс с максимальным значением, возможно, используяквадратичная интерполяция или что-то.
Как правило, вы заботитесь только о нескольких сильных пиках, поэтому онилибо выбрать, потому что онивыше определенного порога, или потому что онипервый н пики упорядоченного списка, ранжированные по амплитуде.
Как я уже сказал, я знаю, как написать что-то подобное сам. Я'я просто спрашиваю, есть лиs уже существующая функция или пакет, который 'Известно, что хорошо работать.
Обновление: Я
перевел скрипт MATLAB и это работает прилично для 1-D случая, но могло бы быть лучше.
Обновленное обновление:
sixtenbeсоздал лучшую версию для одномерного случая.