Referring to the Fast Wavelet Transform, this transform is implemented as a QMF filter bank. This algorithm consists of high/low pass filtering and subsampling. However, a wavelet transform is typically defined by the mother wavelet - the master basis function that is shifted and scaled.

How exactly does this fast wavelet transform define the mother wavelet? I don't see any mentioning of it.

enter image description here

  • $\begingroup$ @LaurentDuval I appreciate it. I want to believe the mother wavelet is defined by the filter pairs but don't have any understanding as to why. $\endgroup$
    – Izzo
    Nov 9 '20 at 1:48

TL;DR: the wavelet appears at the end of the synthesis filter bank, iterated infinitely.

Theoretically founded, practical and fast DSP tools are often derived from continuous theory: think about how the DFT is derived from the continuous Fourier transform, by discretizing both in time (like the Discrete-time Fourier transform) and frequency (like Fourier series), which are dual variables.

For a function $\psi(t)$ to be a wavelet, very few conditions (admissibility) are required. However, discretizing the complementary shift and scale parameters $(a,b)$ of $\psi\left(\frac{t-b}{a}\right)$ is more complicated if one want to remain invertible. And even more complicated to obtain a discrete orthogonal basis.

In other words: apart from a handful of well-known cases (Haar, Shannon, Meyer wavelets), if one have a closed-form formula of a nice admissible continuous wavelet, it is VERY unlikely that it can be discretized as a discrete orthogonal wavelet.

The filter bank structure does the job the other way around. If we assume an orthogonal multiresolution framework, we see that an iterated bank of carefully-designed filters can produce a wavelet analysis. Which wavelet? Theoretically, from a two-scale equation, which generally has no closed-form solution.

You can obtain a good approximation of the wavelet shape with the following procedure. Pick a level $L$. In the deepest detail subband (near the approximation), put a one, and zero elsewhere. Then, do the inverse wavelet transform. The highest the level, the better the approximation.Here is an example with a very q&d code.

Daubechies 3 wavelets from different levels

dwtmode per
nSample = 1024;
data = zeros(nSample,1);
waveletName  = 'db3';
for iLevel = 2:7
C(L(1)+(L(2)+L(3))/2) = 1;
% C((L(1))/2) = 1;
waveletAtLevel = waverec(C,L,waveletName);
plot(waveletAtLevel(find(waveletAtLevel)));axis tight;grid on ; 
xlabel(['At level ',num2str(iLevel)])

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.