Synchrosqueezing is a powerful reassignment method that focuses time-frequency representations, and allows extraction of instantaneous amplitudes and frequencies. Friendly overview.
The package is production-ready. Until v0.6.0, however, significant changes to some code structure are expected.
- Forward & inverse CWT-based Synchrosqueezing
- Forward & inverse Continuous Wavelet Transform (CWT)
- Clean code with explanations and learning references
- Forward & inverse Short-Time Fourier Transform (STFT)
- STFT-based Synchrosqueezing
- Generalized Morse Wavelets
pip install git+https://github.com/OverLordGoldDragon/ssqueezepy
or clone repository; PyPi-available after 0.5.0.
import numpy as np
import matplotlib.pyplot as plt
from ssqueezepy import ssq_cwt
def viz(x, Tx, Wx):
plt.plot(x); plt.show()
plt.imshow(np.abs(Wx), aspect='auto', cmap='jet')
plt.show()
plt.imshow(np.flipud(np.abs(Tx)), aspect='auto', vmin=0, vmax=.1, cmap='jet')
plt.show()
#%%# Define signal ####################################
N = 2048
t = np.linspace(0, 10, N, endpoint=False)
xo = np.cos(2 * np.pi * np.exp(t / 3))
x = xo + np.sqrt(4) * np.random.randn(N)
#%%# SSQ CWT + CWT ####################################
Txo, _, Wxo, scales_xo, _ = ssq_cwt(xo, 'morlet')
Wxo /= np.sqrt(scales_xo) # L1 norm
viz(xo, Txo, Wxo)
Tx, _, Wx, scales_x, _ = ssq_cwt(x, 'morlet')
Wx /= np.sqrt(scales_x) # L1 norm
viz(x, Tx, Wx)
ssqueezepy
was originally ported from MATLAB's Synchrosqueezing Toolbox, authored by E. Brevdo and G. Thakur [1]. Synchrosqueezed Wavelet Transform was introduced by I. Daubechies and S. Maes [2], which was followed-up in [3]. Many implementation details draw from [4].
- G. Thakur, E. Brevdo, N.-S. Fučkar, and H.-T. Wu. "The Synchrosqueezing algorithm for time-varying spectral analysis: robustness properties and new paleoclimate applications", Signal Processing 93:1079-1094, 2013.
- I. Daubechies, S. Maes. "A Nonlinear squeezing of the CWT Based on Auditory Nerve Models".
- I. Daubechies, J. Lu, H.T. Wu. "Synchrosqueezed Wavelet Transforms: a Tool for Empirical Mode Decomposition", Applied and Computational Harmonic Analysis 30(2):243-261, 2011.
- Mallat, S. "Wavelet Tour of Signal Processing 3rd ed".
ssqueezepy is MIT licensed, as found in the LICENSE file. Some source functions may be under other authorship/licenses; see NOTICE.txt.