我可以通過找到一階導數的零交叉點或某些東西來自己寫一些東西,但它似乎是標準庫中包含的通用功能。任何人都知道嗎?Python/SciPy的峯值搜索算法
我的特定應用是一個二維數組,但通常將它用於尋找在FFT的峯值等
具體而言,在這些類型的問題,有多個強峯,然後許多較小的「峯值「只是由應該忽略的噪聲引起的。這些只是例子;不是我的實際數據:
1維峯:
2維峯:
峯值尋找算法會發現這些峯的位置(而不僅僅是它們的值),理想情況下可以找到真正的樣本間峯值,而不僅僅是具有最大值的指數,可能使用quadratic interpolation或其他。
通常你只關心幾個強峯值,所以他們要麼被選中是因爲他們超過了一定的閾值,要麼是因爲他們是按振幅排序的有序列表的第一個峯值。
正如我所說,我知道如何自己寫這樣的東西。我只是問是否有一個預先存在的函數或包已知可以正常工作。
更新:
我translated a MATLAB script和它的作品體面的1-d的情況下,但可能會更好。
更新更新:
created a better version sixtenbe爲1-d的情況。
@endolith你有原始的MATLAB文件,你爲此翻譯爲Python嗎?謝謝! – Spacey 2012-03-22 23:38:02
@Mohammad:http://billauer.co.il/peakdet.html https://gist.github.com/250860#file_peakdet.m – endolith 2012-03-23 14:21:48
這個怎麼樣:http://docs.scipy.org/doc/scipy /reference/generated/scipy.signal.find_peaks_cwt.html – dashesy 2013-04-08 19:13:11