Inverse wavelet transform using only one wavelet transform

4 views (last 30 days)
I used the code below to conduct cwt on signal first. Then, pick one cwt coefficient to reconstruct the signal, i.e., Re_signal using icwt.
In my understanding, the reconstructed Re_signal should be in the form of a wavelet. But the results turned out that the Re_signal equals to zero other than the specific time point.
Can anyone help me with this question?
Thank you a lot.
signal = rand(1,3000);
cwt_coef = cwt(signal);
icwt_coef = cwt_coef.*0;
icwt_coef(5,500) = cwt_coef(5,500);
Re_signal = icwt(icwt_coef);
plot(Re_signal)
  4 Comments
Daniel
Daniel on 4 Apr 2023
TL;DR version: If you're looking for information on the mother wavelet, this might be of more interest than trying to construct it via synthetic CWT coefficients. Morse Wavelets - MATLAB & Simulink (mathworks.com)
With the huge caveat that my experience in wavelets is not that high, especially with the continuous variety, I don't think comparing the Fourier transform to the wavelet transform is entirely fair. They fulfill different purposes, since a Fourier transform is a one-dimensional representation of a one-dimensional input time signal, whereas the wavelet transform is a two-dimensional time-frequency representation of a one-dimensional input time signal.
Every Fourier coefficient in the DFT is orthogonal. So they'll have an independent effect. I'm not sure if this is true of MATLAB's continuous-time wavelet transform. It's true of the discrete-time version because the scaling was chosen to produce orthogonal coefficients. But for the discrete-time transform, if you plot row 87 you'll find the signal varying much more slowly than in row 1. So row 87 is being oversampled.
Because of that oversampling, I don't think you can, in general, produce a single nonzero coefficient in the (sampled, underlying-continuous, numerically approximated) cwt coefficients and have it be a valid cwt. So whatever numerical methods MATLAB is running to recover time data from a (valid, largely oversampled, intrinsically correlated) cwt coefficient set isn't likely to produce valid output on a single nonzero coefficient, because the cwt outputs aren't all orthogonal.
I apologize for the vague language. Again, it's been a while since I've delved into this level of theory. It's an area of interest, but wavelets are so special-use-case that it's not that easy to find an application that lets me play with them enough to develop expertise.
jian zhou
jian zhou on 5 Apr 2023
Thank you for your nice explanation.
The goal for me is to try to figure out the geometric meaning of each wavelet coefficient.
> - if you plot row 87 you'll find the signal varying much more slowly than in row 1. So row 87 is being oversampled.
I don't agree with you that its oversampled, I think it's just the low frequency component.
Please have a check with the attached figure explaning CWT.
It can be seen that if I use only one wavelet coefficient to conduct the inverse wavelet transform,
x(t) = the picked wavelet coefficient times the scaled and shifted motherwavelet.
so x(t) should be in a form of wavelet.
Thank you again for your information.
Hope to talk with you further.

Sign in to comment.

Answers (1)

Bruno Luong
Bruno Luong on 4 Apr 2023
Edited: Bruno Luong on 4 Apr 2023
I guess because you feed in random data, the scale cannot by estimate correctly therefore the first level of the scale (and also the fith) is too small and the motherwavelet is scaled to less than one sample.
Try signal that contains meaningful information content.
What disturb me is icwt accepts array of coefficients as input and nothing else. I don't know how it can figure out the absolute scale factor related to time sample rate.
Note that I knows a little to wavelet theory but I don't own the toolbox license and never pratice it.
  1 Comment
jian zhou
jian zhou on 4 Apr 2023
Thank you for your answer.
I am not using the dwt, but using the cwt. The function to obtain the wavelet coeffiecient is below:
Hope to talk to you further

Sign in to comment.

Tags

Products


Release

R2022b

Community Treasure Hunt

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

Start Hunting!