当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python SciPy signal.cwt用法及代码示例


本文简要介绍 python 语言中 scipy.signal.cwt 的用法。

用法:

scipy.signal.cwt(data, wavelet, widths, dtype=None, **kwargs)#

连续小波变换。

使用小波函数对数据执行连续小波变换。 CWT 使用小波函数对数据进行卷积,其特征在于宽度参数和长度参数。小波函数可以是复数。

参数

data (N,) 数组

执行转换的数据。

wavelet 函数

小波函数,它应该有 2 个参数。第一个参数是返回向量将具有的点数 (len(wavelet(length,width)) == length)。第二个是宽度参数,定义小波的大小(例如高斯的标准偏差)。请参阅满足这些要求的 ricker

widths (M,) 序列

用于变换的宽度。

dtype 数据类型,可选

所需的输出数据类型。默认为float64如果输出小波是真实的并且complex128如果它很复杂。

kwargs

传递给小波函数的关键字参数。

返回

cwt:(M,N)ndarray

将具有 (len(widths), len(data)) 的形状。

注意

对于非对称complex-valued小波,输入信号与小波数据的time-reversedcomplex-conjugate进行卷积[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,“信号处理小波导览(第 3 版)”,学术出版社,2009 年。

例子

>>> import numpy as np
>>> 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)

注意

对于 cwt 矩阵绘图,建议翻转 y 轴

>>> cwtmatr_yflip = np.flipud(cwtmatr)
>>> plt.imshow(cwtmatr_yflip, extent=[-1, 1, 1, 31], cmap='PRGn', aspect='auto',
...            vmax=abs(cwtmatr).max(), vmin=-abs(cwtmatr).max())
>>> plt.show()
scipy-signal-cwt-1.png

相关用法


注:本文由纯净天空筛选整理自scipy.org大神的英文原创作品 scipy.signal.cwt。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。