Wavelet synchrosqueezed transform
the wavelet synchrosqueezed transform,
sst = wsst(
you use to examine data in the time-frequency plane. The synchrosqueezed
transform has reduced energy smearing when compared to the continuous
wavelet transform. The input,
x, must be a 1-D
real-valued signal with at least four samples.
the synchrosqueezed transform using the analytic Morlet wavelet.
[___] = 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.
Obtain the wavelet synchrosqueezed transform of a speech sample using default values.
load mtlb; sst = wsst(mtlb);
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)
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');
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))
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
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
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
Analytic wavelet used to compute the synchrosqueezed transform, specified as one of the following:
'amor' — Analytic Morlet wavelet
'bump' — Bump wavelet
comma-separated pairs of
the argument name and
Value is the corresponding value.
Name must appear inside quotes. You can specify several name and value
pair arguments in any order as
'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
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
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
 Daubechies, I., J. Lu, and H.-T. Wu. "Synchrosqueezed wavelet transforms: an empirical mode decomposition-like tool." Applied and Computational Harmonic Analysis. Vol. 30, Number 2, 2011, pp. 243–261.
 Thakur, G., 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. Vol. 93, Number 5, 2013, pp. 1079–1094.