Wavelet synchrosqueezed transform decomposition

7 次查看(过去 30 天)
Hello,
I want to decompose a Signal in approximation an details. Like the 1-D Decimated Wavelet Transform it do. http://de.mathworks.com/help/wavelet/ug/ex1d2.png
Is this also possible with wavelet synchrosqueezed transform? Or is the 'only' I can get by wsst a time-frequency plot? http://de.mathworks.com/help/examples/wavelet_product/synchrosqueezingExample_02.png
Thank you

采纳的回答

Wayne King
Wayne King 2016-4-15
Hi Marc, synchrosqueezing and the closely related continuous wavelet transform do not provide perfect reconstruction of the input signal in general like the DWT does.
You may want to look at MODWPT and/or MODWT.
The MODWT will give you an octave band decomposition of the input signal (into progressively finer octave bands) with energy conservation and perfect reconstruction without loss of time resolution.
For example
load wecg;
wt = modwt(wecg);
Now if you look at the energies of the wt matrix by row and sum those you will get back the energy of the original signal
sum(var(wt,1,2))
% compare to
var(wecg)
Now if you want to progressively build up your signal from "details" at different levels, use MODWTMRA
mra = modwtmra(wt);
If you sum this mra long the columns you will eventually build back up the original signal.
max(abs(wecg-sum(mra)'))
You can view what the contributions look like at different levels:
subplot(6,1,1);
plot(wecg);
for kk = 2:6
subplot(6,1,kk);
plot(mra(kk-1,:));
end
For a more finely tuned time-frequency analysis see MODWPT and MODWPTDETAILS.

更多回答(1 个)

Wayne King
Wayne King 2016-4-15
Hi Marc, the synchrosqueezed transform does not specifically provide "details" like the discrete wavelet transform, but it does provide the ability to do something very similar. After all, details in discrete wavelet transforms are equivalent to bandpass filterings of the input. With the inverse synchrosqueezed transfom you can reconstruct frequency-localized signal approximations. For example
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');
Now let's reconstruct an approximation without the low-frequency sine wave and compare to the original isolated sig1.
xrec = iwsst(sst,F,[25 250]);
plot(sig1); hold on;
plot(xrec,'r'); grid on;
Also, have a look at wsstridge, where you can identify and simply reconstruct along a time-frequency ridge.
[fridge,iridge] = wsstridge(sst,10,F,'NumRidges',2);
hold on;
plot(t,fridge,'k','linewidth',2);
You can pass the iridge vector or matrix (matrix here because there are two ridges) to IWSST to simply invert the synchrosqueezed transform along a ridge.
  1 个评论
Marc Huber
Marc Huber 2016-4-15
编辑:Marc Huber 2016-4-18
Thank you. I'm not sure if I have understood it right. xrec is the detail and fridge the approximation, right? But I want to do a multilevel 1-D wavelet decomposition (sry didn't say) with wavelet synchrosqueezed transform.
When I do a multilevel 1-D wavelet decomposition I receive the following:
Signal s=a_n+d_1+...+d_n
So, in your case, a_n = fridge and d_1 = xrec (not exactly the same (so the '=' is false if we are precise) but the idea) so that s=fridge+xrec is.
But how can I get more deeper levels like s=fridge_n+xrec_1+...+xrec_n
Is a multilevel 1-D wavelet transform with Wavelet synchrosqueezed transform (here the same, not exactly, but only the idea to multilevel 1-D wavelet transform similar) possible
Thank you very much

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 AI for Signals and Images 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by