代码之家  ›  专栏  ›  技术社区  ›  Alejandro Molinas

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

  •  0
  • Alejandro Molinas  · 技术社区  · 7 年前

    我正在尝试像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);
    

    cwtstruct 做。

    我已经看过PyWavelets了,但是它不允许你用那种方式指定尺度,也不提供相同的输出。

    1 回复  |  直到 7 年前
        1
  •  0
  •   NRG    7 年前

    意识到这是古老的,但如果你想知道这应该工作或至少让你开始。

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

    其中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