Что эквивалентно cwtft () Matlab в Python? (непрерывное вейвлет-преобразование Морлета) - PullRequest
0 голосов
/ 14 сентября 2018

Я пытаюсь реализовать вейвлет-преобразование Морле, как это делает Matlab, но я не смог найти эквивалентную функцию в 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, но он не позволяет указывать шкалы таким образом и не дает одинаковые результаты.

1 Ответ

0 голосов
/ 16 мая 2019

Поймите, что это старо, но если вам интересно, это должно сработать или, по крайней мере, начать.

Я не уверен, какие именно выходы вы ищете, но Wxx - это скейлограмма (двумерный массив в частотно-временном пространстве, похожий на спектрограмму).

Если вам нужен фазовый угол и модуль, как показано на странице справки Matlab, вы можете использовать следующий вейвлет: 'cmor30.0-60000.0'

Где 30 - желаемая полоса пропускания (думаю, ширина окна БПФ), а 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
...