# 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

collapse 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);```

collapse all

### Algorithms

Starting from a signal s of length N, 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 2L. For signal of length N, the signals F and G are of length N + 2L − 1, and then the coefficients CA1 and CD1 are of length

$⌊\frac{N-1}{2}+L⌋.$

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.)