使用 Scipy.signal (Python) 进行连续小波变换:cwt() 函数中的参数“宽度”是什么?(时间-频率)

Arn*_*Noo 4 python scipy time-frequency wavelet-transform

我试图用离散时间信号绘制时频信号(采样步长= 0.001秒)。我使用 Python 和 Scipy.signal 库。我使用返回矩阵的函数 cwt(data, wavelet, widths) 与复数 morlet 小波(或 gabor 小波)进行连续小波变换。不幸的是,关于这种用途的文档并不多。我发现的最好的是: \n -对于 Matlab (我尝试找到相同的缩放时间结果),但我自然无法访问相同的功能,\n - 这解释了什么是连续小波变换,没有小波参数的详细信息。

\n\n

第一步:获取尺度平移信号。带着疑问,我直接将数组 \xe2\x80\x9cwidths\xe2\x80\x9d 与可能不同比例的数组关联起来。因为,如果参数宽度不缩放,我不知道参数宽度是什么。也许,你会告诉我 \xe2\x80\x9cit\xe2\x80\x99s 你当前小波\xe2\x80\x9d 的宽度!但是,即使现在,我也不确定链接宽度与scale\xe2\x80\xa6的关系在Scipy的Morlet文档中,链接似乎可以是:“s:缩放因子,从-s * 2 *窗口化pi 到 +s*2*pi”,所以,我认为 width = 4*pi*scale (宽度=窗口的宽度)。但是当我绘制小波时,尺度增加得越多,小波的视觉宽度就越减少......

\n\n

我的第二个问题是找到并绘制频率的等价物。在文献中,我找到了这个公式:Fa = Fc / (s*delta),其中Fa是最终频率,Fc是小波的中心频率(以Hz为单位),s是尺度,delta是采样周期。因此,对于比例(如果我找到与宽度的链接)和增量(= 0.001秒)来说是可以的,但是它\ xe2 \ x80 \ x99s与小波的中心频率更加复杂。在 scipy 文档中,我发现: \xe2\x80\x9c 这个小波 [morlet 小波] 的基频(以 Hz 为单位)由 f = 2*s*w*r / M 给出,其中 r 是采样率 [s 在这里缩放因子,窗口范围从 -s*2*pi 到 +s*2*pi。默认为 1;w 宽度;M 是小波的长度]。\xe2\x80\x9d 我认为 \xe2\x80\x99s 是中心频率,是吗?

\n\n

谢谢

\n\n

这是我的 cwt() 剩余代码:

\n\n
def MyCWT(data, wavelet, scales):\n\noutput = zeros([len(scales), len(data)], dtype=complex)\n\nfor ind, scale in enumerate(scales):\n\n    window = scale*4*pi*10#Number of points to define correctly the wavelet\n    waveletLength = min(window, len(data))#Number of points of the wavelet\n    wavelet_data = wavelet(waveletLength, s=scale)#Need to precise w parameter???\n\n    #To see the wavelets:\n    plot(wavelet_data)\n    xlabel(\'time (10^-3 sec)\')\n    ylabel(\'amplitude\')\n    title(\'Morlet Wavelet for scale=\'+str(scale)+\'\\nwidth=\'+str(window))\n    show()\n\n    #Concolution to calculate the current line for the current scale:\n    z = convolve(data, wavelet_data, mode=\'same\')\n\n    i = 0\n    for complexVal in z:\n        output[ind][i] = complex(complexVal.real, complexVal.imag)         \n        i+=1\n\nreturn output\n
Run Code Online (Sandbox Code Playgroud)\n

dan*_*van 5

widths参数是一个宽度大小的数组,在将小波与数据进行卷积之前,将小波拉伸到该宽度大小。

您应该选择一个范围,从比预期信号宽度稍小的值开始,到稍大的值。提供的值越多,计算速度越慢,但分辨率越高。

查看文档或参考论文Bioinformatics (2006) 22 (17): 2059-2065。doi:10.1093/bioinformatics/btl355了解更多信息。