nag_mlmodwt (c09dcc) computes the one-dimensional multi-level maximal overlap discrete wavelet transform (MODWT). The initialization function
nag_wfilt (c09aac) must be called first to set up the MODWT options.
nag_mlmodwt (c09dcc) computes the multi-level MODWT for a data set,
, for
, in one dimension. For a chosen number of levels,
, with
, where
is returned by the initialization function
nag_wfilt (c09aac) in
nwlmax, the transform is returned as a set of coefficients for the different levels stored in a single array. Periodic reflection is currently the only available end extension method to reduce the edge effects caused by finite data sets.
The argument
keepa can be set to retain both approximation and detail coefficients at each level resulting in
coefficients being returned in the output array,
c, where
is the number of approximation coefficients and
is the number of detail coefficients. Otherwise, only the detail coefficients are stored for each level along with the approximation coefficients for the final level, in which case the length of the output array,
c, is
. In the present implementation, for simplicity,
and
are chosen to be equal by adding zero padding to the wavelet filters where necessary.
The accuracy of the wavelet transform depends only on the floating-point operations used in the convolution and downsampling and should thus be close to machine precision.
nag_mlmodwt (c09dcc) is not threaded in any implementation.
The wavelet coefficients at each level can be extracted from the output array
c using the information contained in
na on exit.
A set of data values (
) is decomposed using the MODWT over two levels and then the inverse (
nag_imlmodwt (c09ddc)) is applied to restore the original data set.