我试图像matlab一样实现Morlet小波变换,但我在python中找不到任何等效的函数。我想像这样实现它:
s0 = 6/fs; % smallest scale
ds = 0.001; % spacing between scales
NbSc = 3000; % number of scales
SCA = {s0,ds,NbSc, 'lin'}; % specify scales
cwtstruct = cwtft({data, 1/fs},'scales',SCA);并获得与Matlab的cwtstruct相同的输出。
我已经看过PyWavelets了,但是它不能让你以这种方式指定比例,也不能给出相同的输出。
发布于 2019-05-17 04:38:35
意识到这是旧的,但如果你想知道这应该是有效的,或至少让你开始。
我不确定您正在寻找的具体输出是什么,但Wxx是标量图(类似于频谱图的时频空间中的二维数组)。
如果你想要Matlab帮助页面中显示的相角和模数,你可能想要使用以下小波:'cmor30.0-60000.0‘
其中30是你想要的带宽(比如FFT的窗口宽度),60000是小波的中心频率。
import pywt
import numpy as np
fs=1e3
s0=6/fs
smax=3000
wave='morl'
scales=np.arange(s0,smax,1/fs)
Wxx,freq=pywt.cwt(data,scales,wave,sampling_period=1/fs)
freq=freq*fshttps://stackoverflow.com/questions/52321884
复制相似问题