【发布时间】:2010-12-15 08:40:16
【问题描述】:
我可以通过查找一阶导数的过零或其他东西自己编写一些东西,但这似乎是一个足够通用的函数,可以包含在标准库中。有人知道吗?
我的特定应用是二维数组,但通常它会用于在 FFT 等中查找峰值。
具体来说,在这类问题中,有多个强峰值,然后是许多较小的“峰值”,这些“峰值”只是由应该忽略的噪声引起的。这些只是例子;不是我的实际数据:
一维峰:
二维峰:
寻峰算法会找到这些峰值的位置(不仅仅是它们的值),并且理想情况下会找到真正的样本间峰值,而不仅仅是具有最大值的索引,可能使用quadratic interpolation 或其他东西。
通常您只关心几个强峰,因此选择它们要么是因为它们高于某个阈值,要么是因为它们是有序列表的前 n 个峰,按幅度排序。
正如我所说,我知道如何自己写这样的东西。我只是想问一下,是否有一个预先存在的已知运行良好的函数或包。
更新:
我translated a MATLAB script,它适用于一维情况,但可能会更好。
更新更新:
sixtenbe created a better version 用于一维情况。
【问题讨论】:
-
@endolith 您有为此翻译成 python 的原始 MATLAB 文件吗?谢谢!
-
@endolith 我知道这个问题已经很老了,但它非常有用;)我今天早上在
find_peaks上花了几个小时,所以我添加了this answer,这可能对将来的参考有用。 (我敢肯定,你从 2009 年开始就已经发现了这个问题,但这是为其他人 + 我自己准备的,我会在几年后再次问自己这个问题!) -
this这里的答案值得注意。
标签: python scipy fft hough-transform