Hi Alexander,
I don't think there is a trick here. The filter responses scale as you go down in resolution but that is because the discrete wavelet transform uses L2 normalization so that the L2 norm is preserved. That is good for lots of applications, but not for others. For example, in the CWT we (and many others) believe that L1 normalization is better and that is why the CWT in MATLAB from 16b on uses L1 normalization.
One thing to keep in mind is that the downsampling at each level turns essentially half-band signals into full band signals, so we can say that (this is an approximation) the scaling coefficients at level 1 capture aspects of the data in the frequency interval (-1/4,1/4) while the wavelet coefficients capture information in (-1/2 -1/4) union (1/4,1/2). After downsampling both of these become full-band signals so they both have content over (-1/2, 1/2) but while the scaling coefficients maintain the frequency order, the wavelet coefficients actually map the frequencies in (1/4, 1/2) in reverse order. So a frequency in (1/4,1/2) gets mapped essentially to 2*(1/2-f) where f is the original signal. For example:
dwtmode('per');
n = 0:255;
x = cos(2*pi*7/16*n);
f = -1/2:1/256:1/2-1/256;
plot(f,fftshift(abs(fft(x))))
If you zoom in, you see the frequency is 7/16 as expected. Now we expect that the wavelet coefficients at level one will map this to approximately 2*(1/2-7/16)
[A,D] = dwt(x,'sym4');
fnew = -1/2:1/128:1/2-1/128;
plot(fnew,fftshift(abs(fft(D))))
Now the frequency is 1/8 as expected.
I think this is cover in a lot detail in Don Percival's and Andrew Walden's textbook on wavelets in time series analysis
"Wavelet Methods for Time Series Analysis".
0 Comments
Sign in to comment.