Cur*_* F. 6 python scipy wavelet-transform
我对widths
传递给scipy.signal.cwt()
和扩展的参数感到困惑scipy.signal.find_peaks_cwt()
.一个以前的和非常有益的堆栈溢出问题(和指针文献)解释了我的大部分困惑了.这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
Run Code Online (Sandbox Code Playgroud)
结果很接近,但第二次调用在输入数据的元素63处找到一个虚假峰值.因此,我不相信宽度单位是数据向量的索引.但他们还能做些什么呢?如果没有,那么单位是widths
多少? cwt()
并且find_peaks_cwt()
从不知道或看到任何x轴单位(例如support
我在我的代码中定义的向量),所以我错过了什么?实际上,当使用非整数宽度时,它是否有意义?
我自己也有同样的问题.查看源代码,我最好的客户是单位是"样本数".scipy.signal.wavelets.cwt中的关键代码行是:
wavelet_data = wavelet(min(10 * width, len(data)), width)
Run Code Online (Sandbox Code Playgroud)
这里,"小波"是一个函数(母小波的构造器),它接收样本数量的参数"length_of_wavelet"和"width_of_wavelet".宽度仍然可以是非整数值的原因是(如果我没有错)它表示缩放因子,它可以取任何实数正数,因为它只是影响形状的公式的一个因素.小波.
归档时间: |
|
查看次数: |
3908 次 |
最近记录: |