Time-frequency ridges from wavelet synchrosqueezing
fridge = wsstridge(sst)
[fridge,iridge] = wsstridge(sst)
[___] = wsstridge(sst,penalty)
[___] = wsstridge(___,f)
Obtain the wavelet synchrosqueezed transform of a quadratic chirp and extract the maximum time-frequency ridge, in
fridge, and the associated row indices, in
Load the chirp signal and obtain its synchrosqueezed transform.
load quadchirp; [sst,f] = wsst(quadchirp);
Extract the maximum time-frequency ridge.
[fridge,iridge] = wsstridge(sst);
Plot the synchrosqueezed transform.
pcolor(tquad,f,abs(sst)) shading interp title('Synchrosqueezed Transform')
Overlay the plot of the maximum energy frequency ridge.
hold on plot(tquad,fridge) title('Synchrosqueezed Transform with Overlaid Ridge')
Extract the two highest energy modes from a multicomponent signal.
Obtain and plot the wavelet synchrosqueezed transform.
load multicompsig; sig = sig1+sig2; [sst,F] = wsst(sig,sampfreq); contour(t,F,abs(sst)); xlabel('Time'); ylabel('Hz'); grid on; title('Synchrosqueezed Transform of Two-Component Signal');
Using a penalty of 10, extract the two highest energy modes and plot the result.
[fridge,iridge] = wsstridge(sst,10,F,'NumRidges',2); hold on; plot(t,fridge,'k','linewidth',2);
sst— Synchrosqueezed transform
Synchrosqueezed transform, specified as a matrix.
penalty— Frequency bins scaling penalty
Frequency bins scaling penalty, specified as a nonnegative scalar. This input penalizes changes in frequency by multiplying the penalty value by the squared distance between frequency bins. Use a penalty term when you extract multiple ridges, or when you have a single modulated component in additive noise. The penalty term prevents jumps in frequency that occur when the region of highest energy in the time-frequency plane changes abruptly.
comma-separated pairs of
the argument name and
Value is the corresponding value.
Name must appear inside single quotes (
' '). You can
specify several name and value pair arguments in any order as
'NumRidges'— Number of highest energy time-frequency ridges
Number of highest energy time-frequency ridges to extract, specified
as the comma-separated pair consisting of
a positive integer. If this integer is greater than 1,
determines the maximum energy time-frequency ridge by removing the
previously computed ridges and the default or specified
either side of each ridge bin.
'NumFrequencyBins'— Number of frequency bins to remove
Number of frequency bins to remove from synchrosqueezed transform
extracting multiple ridges, specified as the comma-separated pair
'NumFrequencyBins' and a positive
integer. This integer must be less than or equal to
You can specify the nunber of frequency bins to remove only if you
extract more than one ridge. After extracting the highest energy time-frequency
wsstridge removes the
corresponding to the
iridge indices at each time
step. The energy is removed along the time-frequency ridge extended
on both sides of the
iridge index by the specified
number of frequency bins. If the index of the extended time-frequency
ridge exceeds the number of frequency bins at any time step,
the removal region at the first or last frequency bin. To specify
you must specify
fridge— Time-frequency ridge frequencies
Time-frequency ridge frequencies, returned as a vector or matrix.
The frequencies correspond to the time-frequency ridge at each time
fridge is an N-by-
where N is the number of time samples (columns)
nr is the number
of ridges. The first column of the matrix contains the frequencies
for the maximum energy time-frequency ridge in
Subsequent columns contain the frequencies for the time-frequency
ridges in decreasing energy order. By default,
frequencies in cycles per sample.
iridge— Time-frequency ridge indices
Time-frequency ridge row indices of
returned as a vector or matrix. The row indices in
to the row index of the maximum time-frequency ridge for each
nr matrix where N is
the number of time samples (columns) in
nr is the number of ridges. The first column
of the matrix contains the indices for the maximum energy time-frequency
sst. Subsequent columns contain the
indices for the time-frequency ridges in decreasing energy order.
wsstridge uses a penalized forward-backward
greedy algorithm to extract the maximum energy time-frequency ridges
from the wavelet synchrosqueezed transform matrix. The algorithm finds
the maximum time-frequency ridge by minimizing
each time point, where
E is the absolute value
of the synchrosqueezed transform. The is equivalent to maximizing
the value of
E. The algorithm optionally constrains
jumps in frequency with a penalty that is proportional to the square
of the distance between frequency bins.
The following example illustrates the time-frequency ridge algorithm using a penalty that is 2 times the squared distance between frequency bins. This simple synchrosqueezed transform matrix has three frequency bins and three time steps. The second row represents a sine wave.
Obtain the complex matrix output, y, of the wavelet
synchroqueezed transform using
(-ln(|y|)). Suppose you have this
1 4 4 2 2 2 5 5 4
Update the value for the (1,2) element.
Leave the values the at the first time point unaltered. Begin the algorithm with the (1,2) element of the matrix, which presents the first frequency bin at the 2nd time point. Penalize the values in the first column based on their distance from the (1,2) element. Applying the penalty to the first column produces
original value + penalty(distance squared) 1 + 2(0*0) = 1 2 + 2(1*1) = 4 5 + 2(2*2)= 13
1 4 4 2 13 5
The minimum value of the first column is 1, which is in bin 1.
Add the minimum value in column 1 to the current bin value, 4. The updated value for (1,2) becomes 5, which came from bin 1.
Update the values for the remaining elements in column 2.
Recompute the original column 1 values with the penalty factor using the same process as in Step 2a. Obtain the remaining second column values using the same process as in Step 2b. Repeat Step 2 for the third column. The final matrix is
1 5(1) 9(1) 2 4(2) 6(2) 5 7(2) 8(2)
The subscripts indicate the index of the bin in the previous column from which a value came.
Starting at the last column of the matrix, find the
minimum value. Walk back in time through the matrix by going from
the current bin to the origin of that bin at the previous time point.
Keep track of the bin indices, which form the path composing the ridge.
The algorithm smooths the transition by using the origin bin instead
of the bin with the minimum value. For this example, the ridge indices
which matches the energy path of the sine wave in row 2 of the matrix
shown in Step 1.
If you are extracting multiple ridges, the algorithm removes the first ridge from the synchrosqueezed transform and repeats the process.
 I. Daubechies, I., J. Lu, and H. T. Wu. "Synchrosqueezed Wavelet Transforms: an Empricial Mode Decomposition-like Tool", Applied and Computational Harmonic Analysis. Vol. 30(2), 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, pp. 1079–1094.