nag_imldwt (c09cdc) (PDF version)
c09 Chapter Contents
c09 Chapter Introduction
NAG C Library Manual

NAG Library Function Document

nag_imldwt (c09cdc)

+ Contents

    1  Purpose
    7  Accuracy
    9  Example

1  Purpose

nag_imldwt (c09cdc) computes the inverse one-dimensional multi-level discrete wavelet transform (DWT). This function reconstructs data from (possibly filtered or otherwise manipulated) wavelet transform coefficients calculated by nag_mldwt (c09ccc) from an original set of data. The initialization function nag_wfilt (c09aac) must be called first to set up the DWT options.

2  Specification

#include <nag.h>
#include <nagc09.h>
void  nag_imldwt (Integer nwl, Integer lenc, const double c[], Integer n, double y[], const Integer icomm[], NagError *fail)

3  Description

nag_imldwt (c09cdc) performs the inverse operation of nag_mldwt (c09ccc). That is, given a set of wavelet coefficients, computed by nag_mldwt (c09ccc) using a DWT as set up by the initialization function nag_wfilt (c09aac), on a real data array of length n, nag_imldwt (c09cdc) will reconstruct the data array yi, for i=1,2,,n, from which the coefficients were derived. If the original input dataset is level 0, then it is possible to terminate reconstruction at a higher level by specifying fewer than the number of levels used in the call to nag_mldwt (c09ccc). This results in a partial reconstruction.

4  References


5  Arguments

1:     nwlIntegerInput
On entry: the number, nl, of levels to be used in the inverse multi-level transform. The number of levels must less than or equal to the number used in the computation of the wavelet coefficients.
Constraint: 1nwlnfwd, where nfwd is the value used in a preceding call to nag_mldwt (c09ccc).
2:     lencIntegerInput
On entry: the dimension of the array c.
Constraint: lencnc, where nc is the total number of coefficients that correspond to a transform with nfwd levels and is unchanged from the preceding call to nag_mldwt (c09ccc).
3:     c[lenc]const doubleInput
On entry: the coefficients of a multi-level wavelet transform of the dataset.
Let qi be the number of coefficients (of each type) at level i, for i=nfwd,nfwd-1,,1. Then, setting k1=qnfwd and kj+1=kj+qnfwd-j+1, for j=1,2,,nfwd, the coefficients are stored in c as follows:
c[i-1], for i=1,2,,k1
Contains the level nfwd approximation coefficients, anfwd.
c[i-1], for i=k1+1,,k2
Contains the level nfwd detail coefficients dnfwd.
c[i-1], for i=kj+1,,kj+1
Contains the level nfwd-j+1 detail coefficients, for j=2,3,,nfwd.
The values qi, for i=nfwd,nfwd-1,,1, are contained in dwtlev which is produced as output by a preceding call to nag_mldwt (c09ccc). See nag_mldwt (c09ccc) for details.
4:     nIntegerInput
On entry: n, the length of the data array, y, to be reconstructed. For a full reconstruction from nfwd levels, this is the same as argument n in the preceding call to nag_mldwt (c09ccc). For a partial reconstruction of nl<nfwd levels, this will be equal to dwtlev[nl+1] as returned from nag_mldwt (c09ccc).
5:     y[n]doubleOutput
On exit: the dataset reconstructed from the multi-level wavelet transform coefficients and the transformation options supplied to the initialization function nag_wfilt (c09aac).
6:     icomm[100]const IntegerCommunication Array
On entry: contains details of the discrete wavelet transform and the problem dimension for the forward transform previously computed by nag_mldwt (c09ccc).
7:     failNagError *Input/Output
The NAG error argument (see Section 3.6 in the Essential Introduction).

6  Error Indicators and Warnings

Dynamic memory allocation failed.
On entry, lenc is set too small: lenc=value.
Constraint: lencvalue.
On entry, argument value had an illegal value.
Either the initialization function has not been called first or array icomm has been corrupted.
Either the initialization function was called with wtrans=Nag_SingleLevel or array icomm has been corrupted.
On entry, n is inconsistent with the value passed to the initialization function: n=value, n should be value.
On entry, nwl=value.
Constraint: nwl1.
On entry, nwl is larger than the number of levels computed by the preceding call to nag_mldwt (c09ccc): nwl=value, expected =value.
An internal error has occurred in this function. Check the function call and any array sizes. If the call is correct then please contact NAG for assistance.

7  Accuracy

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.

8  Further Comments


9  Example

See Section 9 in nag_mldwt (c09ccc).

nag_imldwt (c09cdc) (PDF version)
c09 Chapter Contents
c09 Chapter Introduction
NAG C Library Manual

© The Numerical Algorithms Group Ltd, Oxford, UK. 2012