Wavelet synchrosqueezed transform
wavelet synchrosqueezed transform,
sst = wsst(
sst, which you use to examine data
in the time-frequency plane. The synchrosqueezed transform has reduced energy smearing when
compared to the continuous wavelet transform (CWT). The input,
be a 1-D real-valued signal with at least four samples. The
function computes the synchrosqueezed transform using the analytic Morlet wavelet.
wsst function normalizes the analyzing wavelets to preserve the
L1 norm. For more information, see Algorithms.
[___] = wsst( uses
a positive, scalar input, as the sampling interval. The duration can
be in years, days, hours, minutes, or seconds. If you specify
the frequencies in
f in cycles per unit time,
where the time unit is derived from specified duration.
[___] = wsst(___, uses
the analytic wavelet specified by
wav to compute
the synchrosqueezed transform. Valid values are
which specify the analytic Morlet and bump wavelet, respectively.
wsst(___) with no output arguments plots the magnitude of the
synchrosqueezed transform as a function of time and frequency. If you do not specify a
fs, or interval,
synchrosqueezed transform is plotted in cycles per sample. If you specify a sampling
frequency, the synchrosqueezed transform is plotted in Hz. If you specify a sampling
interval using a duration, the plot is in cycles per unit time. The time units are derived
from the duration.
[___] = wsst(___,
returns the synchrosqueezed transform with additional options specified by one or more
Synchrosqueezed Transform of Speech Signal
Obtain the wavelet synchrosqueezed transform of a speech sample using default values.
load mtlb sst = wsst(mtlb);
Synchrosqueezed Transform and Reconstruction of Speech Signal
Load a speech signal. The signal is sampled at Hz. Obtain the synchrosqueezed transform.
load mtlb % To hear, type sound(mtlb,Fs) dt = 1/Fs; t = 0:dt:numel(mtlb)*dt-dt; [sst,f] = wsst(mtlb,Fs);
Plot the magnitude of the synchrosqueezed transform.
pcolor(t,f,abs(sst)) shading interp xlabel("Seconds") ylabel("Frequency (Hz)") title("Synchrosqueezed Transform")
Obtain the inverse synchrosqueezed transform. Plot the original signal and the reconstruction.
xrec = iwsst(sst); % To hear, type soundsc(xrec,Fs) plot(t,mtlb) hold on plot(t,xrec) hold off xlabel("Seconds") ylabel("Amplitude") legend("Original","Reconstruction")
Synchrosqueezed Transform of Quadratic Chirp
Obtain the wavelet synchrosqueezed transform of a quadratic chirp. The chirp is sampled at 1000 Hz.
load quadchirp [sst,f] = wsst(quadchirp,1000);
Plot the magnitude of the transform.
hp = pcolor(tquad,f,abs(sst)); hp.EdgeColor = "none"; title("Wavelet Synchrosqueezed Transform") xlabel("Time (s)") ylabel("Frequency (Hz)")
Synchrosqueezed Transform of Sunspot Data
Plot the wavelet synchrosqueezed transform of sunspot data using the default Morlet wavelet. Specify the sampling interval to be one year.
load sunspot wsst(sunspot(:,2),years(1))
Synchrosqueezed Transform of Sunspot Data Using Bump Wavelet
Plot the wavelet synchrosqueezed transform of sunspot data using the bump wavelet. Specify the sampling interval to be one year.
load sunspot wsst(sunspot(:,2),years(1),"bump")
x — Input signal
row or column vector of real values
Input signal, specified as a row or column vector.
be a 1-D, real-valued signal with at least four samples.
fs — Sampling frequency
Sampling frequency, specified as a positive scalar.
ts — Sampling interval
duration with positive scalar input
Sampling interval, also known as the sampling period, specified
duration with positive
scalar input. Valid durations are
minutes. You cannot use calendar durations
calyears). You cannot specify both
sst = wsst(x,hours(12))
wav — Analytic wavelet
'amor' (default) |
Analytic wavelet used to compute the synchrosqueezed transform, specified as one of the following:
'amor'— Analytic Morlet wavelet
'bump'— Bump wavelet
Specify optional pairs of arguments as
the argument name and
Value is the corresponding value.
Name-value arguments must appear after other arguments, but the order of the
pairs does not matter.
Before R2021a, use commas to separate each name and value, and enclose
Name in quotes.
VoicesPerOctave — Number of voices per octave
32 (default) | even integer from 10 to 48
Number of voices per octave to use in the synchrosqueezed transform, specified as an even
integer from 10 to 48. The product of the number of voices per octave and the number
of octaves is the number of scales. The number of octaves depends on the size of the
x and is
ExtendSignal — Extend input signal symmetrically
0 (default) |
Option to extend the input signal symmetrically, specified as a numeric or logical
true). Extending the signal symmetrically can mitigate boundary
effects. If you specify
false, then the signal is not extended. If
true, then the signal is extended.
sst — Synchrosqueezed transform
Synchrosqueezed transform, returned as a matrix. By default,
the synchrosqueezed transform uses
32 voices per octave, and the analytic Morlet wavelet.
an Na-by-N matrix where Na is
the number of scales, and N is the number of samples
x. The default number of scales is
f — Frequencies
Frequencies of the synchrosqueezed transform, returned as a
vector. The frequencies correspond to the rows of the
If you do not specify
the frequencies are in cycles per sample. If you specify
the frequencies are in Hz. If you specify
the frequencies are in cycles per unit time. The length of the frequency
vector is the same as the number of
If you specify
ts as the sampling interval,
used to compute the scale-to-frequency conversion for
wsst function normalizes the analyzing wavelets to preserve the
L1 norm. An equivalent way to state this is that
wsst does not multiply
the Fourier transforms of the wavelet bandpass filters by the square root of the scale.
Multiplying by the square root of the scale would unequally weight different bandpass
With L1 normalization, if you have equal amplitude oscillatory components in your data at
different scales, they will have equal magnitude in the CWT. The
cwt function also uses L1 normalization. For more information, see L1 Norm for CWT.
 Daubechies, Ingrid, Jianfeng Lu, and Hau-Tieng Wu. “Synchrosqueezed Wavelet Transforms: An Empirical Mode Decomposition-like Tool.” Applied and Computational Harmonic Analysis 30, no. 2 (March 2011): 243–61. https://doi.org/10.1016/j.acha.2010.08.002.
 Thakur, Gaurav, Eugene Brevdo, Neven S. Fučkar, and Hau-Tieng Wu. “The Synchrosqueezing Algorithm for Time-Varying Spectral Analysis: Robustness Properties and New Paleoclimate Applications.” Signal Processing 93, no. 5 (May 2013): 1079–94. https://doi.org/10.1016/j.sigpro.2012.11.029.
Introduced in R2016a