Я могу написать что-то сам, найдя нулевые пересечения первой производной или что-то в этом роде, но она кажется, что функция обычного достаточно для включения в стандартные библиотеки. Кто-нибудь знает об одном?Пик-алгоритм поиска для Python/SciPy
Моего конкретное приложение представляет собой 2D массив, но, как правило, он будет использоваться для обнаружения пиков в FFTs и т.д.
В частности, в этих видах проблем, есть несколько сильных пики, а потом много меньше " пики ", которые вызваны шумом, который следует игнорировать. Это всего лишь примеры; не мой фактические данные:
1-мерные пики:
2-мерных пиков:
Пик ознакомительной алгоритм найдет расположение этих пиков (а не только их значения), и в идеале найдет истинный пик между образцами, а не только индекс с максимальным значением, возможно, используя quadratic interpolation или что-то в этом роде.
Обычно вам нужно только немного сильных пиков, поэтому они либо будут выбраны, потому что они превышают определенный порог, либо потому, что они являются первыми n пиками упорядоченного списка, оцененных по амплитуде.
Как я уже сказал, я знаю, как написать что-то подобное сам. Я просто спрашиваю, есть ли уже существовавшая функция или пакет, который, как известно, работает хорошо.
Update:
Я translated a MATLAB script и она работает прилично для случая 1-D, но могло быть лучше.
Обновлено обновление:
sixtenbe created a better version для случая 1-D.
@endolith У вас есть оригинальный файл MATLAB, который вы перевели на python для этого? Благодаря! – Spacey
@Mohammad: http://billauer.co.il/peakdet.html https://gist.github.com/250860#file_peakdet.m – endolith
Как насчет этого: http://docs.scipy.org/doc/scipy /reference/generated/scipy.signal.find_peaks_cwt.html – dashesy