Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用find_peaks_cwt查找噪声数据中的峰值_Python_Scipy - Fatal编程技术网

Python 使用find_peaks_cwt查找噪声数据中的峰值

Python 使用find_peaks_cwt查找噪声数据中的峰值,python,scipy,Python,Scipy,我试图在一些非常嘈杂的数据中找到峰值,例如: 在没有很好理解术语的情况下,我将峰值定义为窄(宽度很大程度上取决于数据的实际含义(或您认为它们应该意味着什么)。下面是一个合成数据的示例: from scipy.signal import find_peaks_cwt from matplotlib.pyplot import plot, ylim from numpy import * N = 2000 x = arange(N) pwid = 200. zideal = sinc(x/pwid

我试图在一些非常嘈杂的数据中找到峰值,例如:


在没有很好理解术语的情况下,我将峰值定义为窄(宽度很大程度上取决于数据的实际含义(或您认为它们应该意味着什么)。下面是一个合成数据的示例:

from scipy.signal import find_peaks_cwt
from matplotlib.pyplot import plot, ylim
from numpy import *
N = 2000
x = arange(N)
pwid = 200.
zideal = sinc(x/pwid - 2)**2 # Vaguely similar to yours
z = zideal * random.randn(N)**2 # adding noise
plot(x, zideal, lw=4)
ylim(0, 1)
zf = find_peaks_cwt(z, pwid/4+zeros(N))
plot(x[zf], zideal[zf], '*', ms=20, color='green')
# Create averaging zones around peaks
xlow = maximum(array(zf) - pwid/2, 0)
xhigh = minimum(array(zf) + pwid/2, x.max())
zguess = 0*xlow # allocate space
for ii in range(len(zf)):
   zguess[ii] = z[xlow[ii]:xhigh[ii]].mean()
plot(x[zf], zguess, 'o', ms=10, color='red')
pwidth
sinc()
函数中缩放峰值宽度。在调用
find_peaks_cwt()
时,对
width
使用较大的值会产生较少的峰值(较低的峰值密度)。最好的结果似乎是将
widths
中的值缩放到半个最大值(HWHM)处的大约一半宽度山峰的边缘

find_peaks\u cwt()
在从理想数据中查找峰值方面做了相当出色的工作。围绕这些值求和是一种猜测峰值的方法。如果要对光谱功率求和,您可能应该将两者之间的所有值求和,而不是像我在这个快速而肮脏的演示中所做的固定间隔


我觉得这个函数特别令人印象深刻,因为它能在出现更大峰值的情况下找到更小的峰值。

似乎区分峰值搜索的主要特征是
pwid/4+zero(N)
。你能解释一下你是如何选择的吗?我不明白你是如何选择震级的,或者它应该是一个与点数长度相同的数组。从文档中可以看出,宽度是:“用于计算CWT矩阵的1-D宽度数组。一般来说,这个范围应该涵盖感兴趣的峰值的预期宽度。”在本例中,我将sinc()中的间隔缩放为pwid。“widths”数组是单边宽度,因此我将其缩放为近似峰值的HWHM。