scipy.signal.cwt¶
- scipy.signal.cwt(data, wavelet, widths, dtype=None, **kwargs)[源代码]¶
连续小波变换。
对其执行连续小波变换 data ,使用 wavelet 功能。CWT执行卷积运算 data 使用 wavelet 函数,该函数的特征是宽度参数和长度参数。这个 wavelet 函数可以是复杂的。
- 参数
- data(n,)ndarray
要对其执行转换的数据。
- wavelet功能
小波函数,它应该接受2个参数。第一个参数是返回的向量将具有的点数(len(小波(length,width))==length)。第二个是宽度参数,定义小波的大小(例如,高斯的标准偏差)。看见
ricker
,它满足了这些要求。- widths(M,)序列
用于变换的宽度。
- dtype数据类型,可选
所需的输出数据类型。默认为
float64
如果输出的 wavelet 是真实的,而且complex128
如果它很复杂的话。1.4.0 新版功能.
- kwargs
传递给小波函数的关键字参数。
1.4.0 新版功能.
- 退货
- CWT:(M,N)ndarray
将具有(len(宽度),len(数据))的形状。
注意事项
1.4.0 新版功能.
对于非对称复值小波,输入信号与小波数据的时间反转复共轭进行卷积 [1] 。
length = min(10 * width[ii], len(data)) cwt[ii,:] = signal.convolve(data, np.conj(wavelet(length, width[ii], **kwargs))[::-1], mode='same')
参考文献
- 1
S.Mallat,“信号处理小波教程(第三版)”,学术出版社,2009。
示例
>>> from scipy import signal >>> import matplotlib.pyplot as plt >>> t = np.linspace(-1, 1, 200, endpoint=False) >>> sig = np.cos(2 * np.pi * 7 * t) + signal.gausspulse(t - 0.4, fc=2) >>> widths = np.arange(1, 31) >>> cwtmatr = signal.cwt(sig, signal.ricker, widths) >>> plt.imshow(cwtmatr, extent=[-1, 1, 1, 31], cmap='PRGn', aspect='auto', ... vmax=abs(cwtmatr).max(), vmin=-abs(cwtmatr).max()) >>> plt.show()