scipy 检测信号尖峰何时开始以及何时结束

ztyzrc3y  于 2022-11-10  发布在  其他
关注(0)|答案(1)|浏览(171)

这是我的数据样本。如你所见,有3个尖峰,尖峰后的数据持续高于正常水平的不同时期和水平。
我试着用一个基本的for循环来解决这个问题,但是无法处理它。我不需要找到图中的每一个尖峰,我只需要计算出例如尖峰何时从点100开始,何时在点120之前自动下降。

46qrfjad

46qrfjad1#

您的问题涉及到整个数据分析分支。一个很好的起点可能是scipy.signal系列。它提供了find_peaks [ 1 ]和peak_widths [ 2 ]来帮助实现这一点。这些函数的起点可能如下所示:

from scipy import signal
ts = np.array([...])  # Your data
threshold = (np.max(ts) - np.min(ts))/2 + np.min(ts)

peaks = signal.find_peaks(ts, threshold=threshold)[0]
width = signal.peak_widths(ts, peaks)[0]

由于在3个大峰值上和旁边有这些较小的峰值,因此需要设置一个阈值。另外,我假设您需要调整peak_widths函数的参数,因为它可能会检测到较小峰值的宽度。

相关问题