dwt

Single-level discrete 1-D wavelet transform

Syntax

[cA,cD] = dwt(X,'wname')
[cA,cD] = dwt(X,Lo_D,Hi_D)
[cA,cD] = dwt(...,'mode',MODE)

Description

The dwt command performs a single-level one-dimensional wavelet decomposition with respect to either a particular wavelet ('wname', see wfilters for more information) or particular wavelet decomposition filters (Lo_D and Hi_D) that you specify.

[cA,cD] = dwt(X,'wname') computes the approximation coefficients vector cA and detail coefficients vector cD, obtained by a wavelet decomposition of the vector X. The string 'wname' contains the wavelet name.

[cA,cD] = dwt(X,Lo_D,Hi_D) computes the wavelet decomposition as above, given these filters as input:

  • Lo_D is the decomposition low-pass filter.

  • Hi_D is the decomposition high-pass filter.

Lo_D and Hi_D must be the same length.

Let lx = the length of X and lf = the length of the filters Lo_D and Hi_D; then length(cA) = length(cD) = la where la = ceil(lx/2), if the DWT extension mode is set to periodization. For the other extension modes, la = floor(lx+lf-1)/2).

For more information about the different Discrete Wavelet Transform extension modes, see dwtmode.

[cA,cD] = dwt(...,'mode',MODE) computes the wavelet decomposition with the extension mode MODE that you specify. MODE is a string containing the desired extension mode.

Example:

[cA,cD] = dwt(x,'db1','mode','sym');

Examples

expand all

DWT Using Wavelet Name

Obtain the level-1 DWT of the noisy Doppler signal using a wavelet name.

load noisdopp;
[A,D] = dwt(noisdopp,'sym4');

DWT Using Wavelet and Scaling Filters

Obtain the level-1 DWT of the noisy Doppler signal using wavelet and scaling filters.

load noisdopp;
[Lo_D,Hi_D] = wfilters('bior3.5','d');
[A,D] = dwt(noisdopp,Lo_D,Hi_D);

More About

expand all

Algorithms

Starting from a signal s, two sets of coefficients are computed: approximation coefficients CA1, and detail coefficients CD1. These vectors are obtained by convolving s with the low-pass filter Lo_D for approximation and with the high-pass filter Hi_D for detail, followed by dyadic decimation.

More precisely, the first step is

The length of each filter is equal to 2N. If n = length(s), the signals F and G are of length n + 2N − 1, and then the coefficients CA1 and CD1 are of length

floor(n12)+N

To deal with signal-end effects involved by a convolution-based algorithm, a global variable managed by dwtmode is used. This variable defines the kind of signal extension mode used. The possible options include zero-padding (used in the previous example) and symmetric extension, which is the default mode.

    Note   For the same input, this dwt function and the DWT block in the Signal Processing Toolbox™ do not produce the same results. The blockset is designed for real-time implementation while Wavelet Toolbox™ software is designed for analysis, so they produce handle boundary conditions and filter states differently.

    To make the dwt function output match the DWT block output, set the function boundary condition to zero-padding by typing dwtmode('zpd') at the MATLAB® command prompt. To match the latency of the DWT block, which is implemented using FIR filters, add zeros to the input of the dwt function. The number of zeros you add must be equal to half the filter length.

References

Daubechies, I. (1992), Ten lectures on wavelets, CBMS-NSF conference series in applied mathematics. SIAM Ed.

Mallat, S. (1989), "A theory for multiresolution signal decomposition: the wavelet representation," IEEE Pattern Anal. and Machine Intell., vol. 11, no. 7, pp. 674–693.

Meyer, Y. (1990), Ondelettes et opérateurs, Tome 1, Hermann Ed. (English translation: Wavelets and operators, Cambridge Univ. Press. 1993.)

Was this topic helpful?