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.

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 2N.
If n = length(s),
the signals F and G are of length n +
2N − 1, and then the coefficients CA_{1} and CD_{1} are
of length

floor$$\left(\frac{n-1}{2}\right)+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.)