1

这是一个类似于我的数据的示例,有一个尖峰,周围有一些小噪音,而在其他地方大部分是恒定的,有小噪音。

两者find_peaks_cwtpeakutils没有像我希望的那样执行这些数据。

在此处输入图像描述

find_peaks_cwt

>>> x
[0.1, 0.1, 0.1, 0.11, 0.1, 0.09, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.0, 0.0, 0.4, 0.7, 0.7, 0.2, 0.0, 0.005, 0.1, 0.1]
>>> peaks = scipy.signal.find_peaks_cwt(x, np.arange(1,5))
>>> peaks
[1, 2, 3, 9, 12, 16, 17]

16 和 17 是正确的峰,但是检测到 1、2、3、9、12 是怎么回事?此外,该例程缺乏将 16/17 识别为单峰的能力。这对我来说有点问题。

这个findpeaks包看起来更健壮,我已经尝试过实现它,但它有一些奇怪的问题。当我查看数据时(有一个明显的峰值),它会无缘无故地抛出对我有意义的异常,有时它甚至会无缘无故地产生负索引!在使用了一段时间后,我得到了越野车 heeby jeebies。

即使在这个例子中,peakutils似乎也没有达到预期的效果:

>>> x
[0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.0, 0.0, 0.4, 0.7, 0.7, 0.2, 0.0, 0.005, 0.1, 0.1]
>>> peakutils.indexes(x, thres=0.0) # I tried many values of thres
array([], dtype=int64)

关于识别这样的尖峰有什么建议吗?我正在考虑不使用峰值检测,而只是编写自己的函数来识别它们。

4

0 回答 0