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 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 synchrosqueezed
transform as a function of time and frequency. If you do not specify a sampling
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
Name,Value pair arguments.
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
Obtain the wavelet synchrosqueezed transform of a speech signal and compare the original and reconstructed signals.
Load the speech signal and obtain its synchrosqueezed transform.
load mtlb soundsc(mtlb,Fs) dt = 1/Fs; t = 0:dt:numel(mtlb)*dt-dt; [sst,f] = wsst(mtlb,Fs);
Plot the synchrosqueezed transform.
pcolor(t,f,abs(sst)) shading interp xlabel('Seconds') ylabel('Frequency (Hz)') title('Synchrosqueezed Transform')
Obtain the inverse synchrosqueezed transform and play the reconstructed speech signal.
xrec = iwsst(sst); soundsc(xrec,Fs)
Synchrosqueezed Transform of Quadratic Chirp
Obtain and plot the wavelet synchrosqueezed transform of a quadratic chirp. The chirp is sampled at 1000 Hz.
load quadchirp; [sst,f] = wsst(quadchirp,1000); hp = pcolor(tquad,f,abs(sst)); hp.EdgeColor = 'none'; title('Wavelet Synchrosqueezed Transform'); xlabel('Time'); ylabel('Hz');
Synchrosqueezed Transform of Sunspot Data
Obtain 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
Obtain and plot the wavelet synchrosqueezed transform of sunspot data using the bump wavelet. Specify the sampling interval to be 1 for one sample per 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 the
comma-separated pair consisting of
'VoicesPerOctave' and 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
false (default) |
Option to extend the input signal symmetrically, specified as
the comma-separated pair consisting of
the signal symmetrically can mitigate boundary effects. If you specify
then the signal is not extended. If you specify
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