# 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` 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

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

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

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

Starting from a signal *s*, two sets of coefficients
are computed: approximation coefficients *CA*_{1},
and detail coefficients *CD*_{1}.
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 2*N*.
If *n* = `length(`*s*`)`,
the signals *F* and *G* are of length *n* +
2*N* − 1, and then the coefficients *CA*_{1} and *CD*_{1} are
of length

floor

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

## See Also

`dwtmode` | `idwt` | `wavedec` | `waveinfo `