Inverse wavelet transform using only one wavelet transform

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 Commenti

Are you thinking of the discrete wavelet transform? Off the top of my head, I would expect a single nonzero coefficient from a DWT to produce multiple nonzero coefficients on the output. I'm not familiar enough with the CWT (and MathWorks' implementation of it) to know how I would expect a single nonzero CWT coefficient to respond.
Thank you for your answer.
You know the wavelet coefficient is obtained by the convolution of the signal and the scaled and shifted motherwavelet.
In my understanding, like the Fourier transform, the Fourier coefficient gives the amplitude and phase information of the harmonic wave at a specific frequency, and the inverse Fourier transform of one Fourier coefficient is a harmonic wave.
So, I think the inverse wavelet transform of one wavelet coefficient should be the the scaled and shifted motherwavelet.
Is my description clear?
Hope to discuss with you further.
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.
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.

Accedi per commentare.

Risposte (1)

Bruno Luong
Bruno Luong il 4 Apr 2023
Modificato: Bruno Luong il 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 Commento

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

Accedi per commentare.

Prodotti

Release

R2022b

Tag

Richiesto:

il 31 Mar 2023

Commentato:

il 5 Apr 2023

Community Treasure Hunt

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

Start Hunting!

Translated by