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()
../../_images/scipy-signal-cwt-1.png