Wavelet synchrosqueezed transform decomposition
4 ビュー (過去 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
0 件のコメント
採用された回答
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.
0 件のコメント
その他の回答 (1 件)
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.
参考
カテゴリ
Help Center および File 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!