cwt.m normalization

36 Ansichten (letzte 30 Tage)
Simon Hofmann
Simon Hofmann am 10 Mai 2017
Kommentiert: Muhammad Deeb am 2 Nov. 2021
Hello, in cwt.m in section L1 Norm from cwt.m is the mention from: "To preserve the energy of the original signal, you must multiply the CWT by 1/sqrt(s)"
should I normalize the scalogram or is it already done from the cwt.m?
Thx

Akzeptierte Antwort

Wayne King
Wayne King am 11 Mai 2017
Bearbeitet: Wayne King am 11 Mai 2017
Hi Simon, that energy normalization should be interpreted here in the correct way. With the CWT, we don't preserve the energy in either case with the L1 or L2 normalization. That energy preservation is only in the integral form of the CWT which is not implemented numerically. The same is true of the spectrogram in the Signal Processing Toolbox. If you look at the integral forms for the CWT with the L2 normalization, then the energy is preserved. However, when you implement the CWT numerically, that is not the case. We will make that clear in the documentation.
Now in the case of the DWT with very specific conditions, i.e. when we implement the classic DWT with a power of two input and the signal length some power of two. You will see the energy preserved. For example:
dwtmode('per')
x = randn(1024,1);
norm(x,2)^2
[C,L] = wavedec(x,10,'sym4');
norm(C,2)^2
But that won't happen with the CWT (by design) and it has nothing to do with the L2 vs L1 normalization. In fact if you look at the legacy CWT, we didn't preserve signal energy there either even though the wavelets were normalized by 1/\sqrt{s}.
If you want a redundant wavelet or wavelet packet transform that does preserve the energy, then MODWT and MODWPT will do that. They are what are referred to as "tight wavelet (and wavelet packet) frames".
Again, the reason for the L1 normalization in the CWT was so that if you have equal amplitude oscillatory components in your data at different scales, they should have equal magnitude in the CWT and NOT be multiplied by a scale factor.
  2 Kommentare
Simon Hofmann
Simon Hofmann am 11 Mai 2017
Thank you for clarification in the documentation!
guillaume attuel
guillaume attuel am 27 Nov. 2019
It's really unfortunate since they don't form a basis anymore. How can one rely on amplitude, moment, or cumulant analysis then?

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (3)

Wayne King
Wayne King am 11 Mai 2017
Hi Simon, the scalogram is normalized for the L1 norm already. In many other uses of the wavelet transform, it is customary to normalize by 1/sqrt(s) so that the L2 norm is preserved. In this case the wavelet transform is computed with 1/s. You can see this by entering the following example:
Fs = 1e3;
t = 0:1/Fs:1;
x = cos(2*pi*32*t).*(t>=0.1 & t<0.3)+sin(2*pi*64*t).*(t>0.7);
wgnNoise = 0.05*randn(size(t));
x = x+wgnNoise;
cwt(x,1000)
Now, if you look at the magnitude of these unit sinusoidal components in the colorbar, you see their amplitude is essentially 1 as expected even though they are at different scales. You can verify this with the data cursor. This is a direct result of the L1 normalization.
Hope that helps, Wayne
  4 Kommentare
In Mei Sou
In Mei Sou am 25 Jul. 2020
Would you please let me know what is the unit/dimension of the magnitude in the scalogram obtained from the new version cwt? Is it the same as the input function x(t)?
Muhammad Deeb
Muhammad Deeb am 2 Nov. 2021
cwt(x1,Fs)
When executing the program I get the following error message:
Warning: Struct field assignment overwrites a value with class "double". See MATLAB R14SP2
Release Notes, Assigning Nonstructure Variables As Structures Displays Warning, for details.
> In mmm2 at 16
Error using cwt (line 145)
Not enough input arguments.
Error in mmm2 (line 21)
cwt(x,Fs)

Melden Sie sich an, um zu kommentieren.


Manuel Guimarães
Manuel Guimarães am 27 Jul. 2018
This is why I think TMW should support the old CWT (now labeled as not recommended) along with the new cwt version. L1 has advantages in many instances but not all. Some applications require L2 and a linear scale on the pseudo frequency axis (not log). CWT may be used as a detector not for reconstruction.

In Mei Sou
In Mei Sou am 25 Jul. 2020
Would you please let me know what is the unit/dimension of the magnitude in the scalogram obtained from the new version cwt? Is it the same as the input function x(t)?

Kategorien

Mehr zu Continuous Wavelet Transforms finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by