我对传递给
结果非常接近,但第二次调用在输入数据的第63个元素处发现了一个虚假峰。因此,我不确定宽度的单位是否为数据向量的索引。但是它们还能是什么呢?如果不是,
scipy.signal.cwt()
以及扩展到scipy.signal.find_peaks_cwt()
的widths
参数感到困惑。一篇之前非常有用的Stack Overflow问题(以及其中的指针)解释了我的大部分困惑。 widths
是一个比例数组,用于在与数据卷积之前拉伸小波。
仍然让我困惑的是,元素的widths
单位是什么? 宽度为1是否意味着将小波拉伸为一个“索引”宽度,其中索引是data
元素之间的距离? 起初,我认为是这种情况,但是(a)宽度可以采用非整数值,并且(b)cwt()结果可能因宽度而异。
以下是说明我的困惑的一些代码。 为什么最后两行会产生不同的结果?
#generating an arbitrary signal with overlapping gaussian peaks with various
npeaks = 6
support = np.arange(0,1.01,0.01)
pkx = np.array([0.2, 0.3, 0.38, 0.55, 0.65]) #peak locations
pkfun = sum(stats.norm.pdf(support, loc=pkx[i], scale=0.03) for i in range(0,npeaks-1))
#finding peaks for two different setting of widths
pkindsOne = sig.find_peaks_cwt(pkfun, widths = np.arange(4,6), wavelet = sig.ricker)
pkindsTwo = sig.find_peaks_cwt(pkfun, widths = np.arange(4,6.4), wavelet = sig.ricker)
#printing to show difference between calls
for ind, el in enumerate(pkindsTwo):
print el, pkindsOne[ind]
20 20
36 36
38 38
55 55
63 66
66 91
91
结果非常接近,但第二次调用在输入数据的第63个元素处发现了一个虚假峰。因此,我不确定宽度的单位是否为数据向量的索引。但是它们还能是什么呢?如果不是,
widths
的单位是什么?cwt()
和find_peaks_cwt()
从未知道或看到任何x轴单位(例如我在代码中定义的support
向量),那么我错过了什么?在实际情况下,何时使用非整数宽度才有意义?