在Python中,Matlab的cwtft()等价于什么?(连续morlet小波变换)

2024-10-01 11:41:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图像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相同的输出。在

我已经看过pywavel,但是它不能让你用那种方式指定尺度,也不能给出相同的输出。在


Tags: 函数dsbetweenfsscale等价matlabscales
1条回答
网友
1楼 · 发布于 2024-10-01 11:41:29

意识到这是很老的,但如果你想知道这应该行得通或至少让你开始。在

我不知道你想要什么样的输出,但是Wxx是一个标度图(类似于谱图的时频空间中的2D数组)。在

如果你想要的相位角和模数如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*fs

相关问题 更多 >