As shown before, the discrete wavelet transform of a discrete signal
is the process of getting the coefficients:

where the basis scaling and wavelet functions are respectively

Recall that both the scaling and wavelet functions can be expanded in terms of the basis scaling functions of the next higher resolution:

We now consider a fast algorithm to obtain the coefficients and of different scales . Consider first the scaling function . Replacing by (scaled by and translated by ), we get

We then let i.e. , the above becomes

Similarly, the wavelet function can also be expanded:

This wavelet function is identical to the one used in the discrete wavelet transform above, which can be replaced by the right-hand side of the equation:

Note that the expression inside the brackets happens to be the wavelet transform for the coefficient of scale :

therefore we have a recursive relation between the wavelet transform coefficients of two consecutive scale levels and :

and the same is true to the scaling function:

Comparing these equations with a discrete convolution:

we see that the wavelet transform coefficients and at the jth scale can be obtained from the coefficients and at the (j+1)th scale by:

- Convolution with time-reversed or ;
- Sub-sampling to get every other samples in the convolution.

Based on these two equations, all wavelet and scaling coefficients and of a given signal can be obtained recursively from the coefficients and at the highest resolution level (with maximum details), i.e., the data points ( ) directly sampled from the signal . As a member of space , these discrete samples can be written as a linear combination of the scaling basis functions :

If we let the kth basis function be a unit pulse at the kth sampling time, i.e., (same as the ith component of a unit vector in N-dimensional vector space is ), then the kth coefficient is the same as the kth sample of the function . I.e., , from which the scaling and wavelet coefficients of the lower scales can be obtained by the subsequent filter banks.

**Inverse Wavelet Transform**

As the forward wavelet transform - finding the transform coefficients and from a given function - can be implemented by the analysis filter bank, the inverse wavelet transform - reconstructing the function from the coefficients and - can be implemented by the synthesis filter bank.

**Complexity of FWT**

The computation cost of the fast wavelet transform (FWT) is the convolutions carried
out in each of the filters. The number of data samples in the convolution is halved
after each sub-sampling, therefore the total complexity is:

i.e., the FWT has linear complexity.

The system shown in the figure above is called a filter bank and is further discussed here

A detailed discussion about Matlab implementaton can be found on this MathWorks webpage.