scipy.signal.
morlet2#
- scipy.signal.morlet2(M, s, w=5)[源代码][源代码]#
复杂Morlet小波,专为与
cwt
一起工作而设计。自 1.12.0 版本弃用: scipy.signal.morlet2 在 SciPy 1.12 中已被弃用,并将在 SciPy 1.15 中移除。我们建议使用 PyWavelets 代替。
返回根据 s 归一化的 morlet 小波的完整版本:
exp(1j*w*x/s) * exp(-0.5*(x/s)**2) * pi**(-0.25) * sqrt(1/s)
- 参数:
- M整数
小波的长度。
- s浮动
小波的宽度参数。
- wfloat, 可选
Omega0。默认值为 5
- 返回:
- morlet(M,) ndarray
注释
Added in version 1.4.0.
此函数设计用于与
cwt
一起工作。由于morlet2
返回一个复数数组,cwt
的 dtype 参数应设置为 complex128 以获得最佳结果。注意与
morlet
实现方式的差异。该小波的基本频率(以赫兹为单位)由以下公式给出:f = w*fs / (2*s*np.pi)
其中
fs
是采样率,s 是小波宽度参数。类似地,我们可以在f
处获取小波宽度参数:s = w*fs / (2*f*np.pi)
示例
>>> import numpy as np >>> from scipy import signal >>> import matplotlib.pyplot as plt
>>> M = 100 >>> s = 4.0 >>> w = 2.0 >>> wavelet = signal.morlet2(M, s, w) >>> plt.plot(abs(wavelet)) >>> plt.show()
此示例展示了在时频分析中使用
morlet2
和cwt
的基本用法:>>> t, dt = np.linspace(0, 1, 200, retstep=True) >>> fs = 1/dt >>> w = 6. >>> sig = np.cos(2*np.pi*(50 + 10*t)*t) + np.sin(40*np.pi*t) >>> freq = np.linspace(1, fs/2, 100) >>> widths = w*fs / (2*freq*np.pi) >>> cwtm = signal.cwt(sig, signal.morlet2, widths, w=w) >>> plt.pcolormesh(t, freq, np.abs(cwtm), cmap='viridis', shading='gouraud') >>> plt.show()