c09 Chapter Contents
c09 Chapter Introduction
NAG C Library Manual

# NAG Library Function Documentnag_cwt_1d_real (c09bac)

## 1  Purpose

nag_cwt_1d_real (c09bac) computes the real, continuous wavelet transform in one dimension.

## 2  Specification

 #include #include
 void nag_cwt_1d_real (Nag_Wavelet wavnam, Integer wparam, Integer n, const double x[], Integer nscal, const Integer scales[], double c[], NagError *fail)

## 3  Description

nag_cwt_1d_real (c09bac) computes the real part of the one-dimensional, continuous wavelet transform
 $Cs,k = ∫ ℝ xt 1 s ψ* t-k s dt ,$
of a signal $x\left(t\right)$ at scale $s$ and position $k$, where the signal is sampled discretely at $n$ equidistant points ${x}_{\mathit{i}}$, for $\mathit{i}=1,2,\dots ,n$. $\psi$ is the wavelet function, which can be chosen to be the Morlet wavelet, the derivatives of a Gaussian or the Mexican hat wavelet ($*$ denotes the complex conjugate). The integrals of the scaled, shifted wavelet function are approximated and the convolution is then computed.
The mother wavelets supplied for use with this function are defined as follows.
1. The Morlet wavelet (real part) with nondimensional wave number $\kappa$ is
 $ψx = 1 π 1/4 cosκx - e -κ2/2 e -x2/2 ,$
where the correction term, ${e}^{-{\kappa }^{2}/2}$ (required to satisfy the admissibility condition) is included.
2. The derivatives of a Gaussian are obtained from
 $ψ^m x = dm e -x2 d xm ,$
taking $m=1,\dots ,8$. These are the Hermite polynomials multiplied by the Gaussian. The sign is then adjusted to give ${\stackrel{^}{\psi }}^{\left(m\right)}\left(0\right)>0$ when $m$ is even while the sign of the succeeding odd derivative, ${\stackrel{^}{\psi }}^{\left(m+1\right)}$, is made consistent with the preceding even numbered derivative. They are normalized by the ${L}^{2}$-norm,
 $pm = ∫ -∞ ∞ ψ^ m x 2 d x 1/2$
The resulting normalized derivatives can be written in terms of the Hermite polynomials, ${H}_{m}\left(x\right)$, as
 $ψ m x = α Hmx e -x2 pm ,$
where
Thus, the derivatives of a Gaussian provided here are,
 $ψ1 x = - 2π 1/4 2 x e -x2 ,$
 $ψ2 x = - 2π 1/4 1 3 4x2 - 2 e -x2 ,$
 $ψ3 x = 2π 1/4 115 8x3 - 12x e -x2 ,$
 $ψ4 x = 2π 1/4 1105 16x4 - 48x2 + 12 e -x2 ,$
 $ψ5 x = - 2π 1/4 1 3105 32x5 - 160x3 + 120x e -x2 ,$
 $ψ6 x = - 2π 1/4 1 31155 64x6 - 480x4 + 720x2 - 120 e -x2 ,$
 $ψ7 x = 2π 1/4 1 315015 128x7 - 1344x5 + 3360x3 - 1680x e -x2 ,$
 $ψ8 x = 2π 1/4 1 451001 256x8 - 3584x6 + 13440x4 - 13440x2 + 1680 e -x2 .$
3. The second derivative of a Gaussian is known as the Mexican hat wavelet and is supplied as an additional function in the form
 $ψx = 2 3 π1/4 1-x2 e -x2/2 .$
The remaining normalized derivatives of a Gaussian can be expressed as multiples of the exponential ${e}^{-{t}^{2}/2}$ by applying the substitution $x=t/\sqrt{2}$ followed by multiplication with the scaling factor, $1/\sqrt[4]{2}$.

## 4  References

Daubechies I (1992) Ten Lectures on Wavelets SIAM, Philadelphia

## 5  Arguments

1:     wavnamNag_WaveletInput
On entry: the name of the mother wavelet. See the c09 Chapter Introduction for details.
${\mathbf{wavnam}}=\mathrm{Nag_Morlet}$
Morlet wavelet.
${\mathbf{wavnam}}=\mathrm{Nag_DGauss}$
Derivative of a Gaussian wavelet.
${\mathbf{wavnam}}=\mathrm{Nag_MexHat}$
Mexican hat wavelet.
Constraint: ${\mathbf{wavnam}}=\mathrm{Nag_Morlet}$, $\mathrm{Nag_DGauss}$ or $\mathrm{Nag_MexHat}$.
2:     wparamIntegerInput
On entry: the nondimensional wave number for the Morlet wavelet or the order of the derivative for the Gaussian wavelet. It is not referenced when ${\mathbf{wavnam}}=\mathrm{Nag_MexHat}$.
Constraints:
• if ${\mathbf{wavnam}}=\mathrm{Nag_Morlet}$, $5\le {\mathbf{wparam}}\le 20$;
• if ${\mathbf{wavnam}}=\mathrm{Nag_DGauss}$, $1\le {\mathbf{wparam}}\le 8$.
3:     nIntegerInput
On entry: the size, $n$, of the input dataset $x$.
Constraint: ${\mathbf{n}}\ge 2$.
4:     x[n]const doubleInput
On entry: x contains the input dataset ${\mathbf{x}}\left[\mathit{j}-1\right]={x}_{\mathit{j}}$, for $\mathit{j}=1,2,\dots ,n$.
5:     nscalIntegerInput
On entry: the number of scales to be computed.
Constraint: ${\mathbf{nscal}}\ge 1$.
6:     scales[nscal]const IntegerInput
On entry: the scales at which the transform is to be computed.
Constraint: ${\mathbf{scales}}\left[\mathit{i}-1\right]\ge 1$, for $\mathit{i}=1,2,\dots ,{\mathbf{nscal}}$.
7:     c[${\mathbf{nscal}}×{\mathbf{n}}$]doubleOutput
On exit: the transform coefficients at the requested scales, where ${\mathbf{c}}\left[\left(j-1\right)×{\mathbf{nscal}}+i-1\right]$ is the transform coefficient ${C}_{i,j}$ at scale $i$ and position $j$.
8:     failNagError *Input/Output
The NAG error argument (see Section 3.6 in the Essential Introduction).

## 6  Error Indicators and Warnings

NE_ALLOC_FAIL
Dynamic memory allocation failed.
On entry, argument $〈\mathit{\text{value}}〉$ had an illegal value.
NE_INT
On entry, ${\mathbf{n}}=〈\mathit{\text{value}}〉$.
Constraint: ${\mathbf{n}}\ge 2$.
On entry, ${\mathbf{nscal}}=〈\mathit{\text{value}}〉$.
Constraint: ${\mathbf{nscal}}\ge 1$.
On entry, ${\mathbf{wavnam}}=\mathrm{Nag_DGauss}$ and ${\mathbf{wparam}}=〈\mathit{\text{value}}〉$.
Constraint: if ${\mathbf{wavnam}}=\mathrm{Nag_DGauss}$, $1\le {\mathbf{wparam}}\le 8$.
On entry, ${\mathbf{wavnam}}=\mathrm{Nag_Morlet}$ and ${\mathbf{wparam}}=〈\mathit{\text{value}}〉$.
Constraint: if ${\mathbf{wavnam}}=\mathrm{Nag_Morlet}$, $5\le {\mathbf{wparam}}\le 20$.
NE_INTERNAL_ERROR
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 nag_cwt_1d_real (c09bac) is determined by the fact that the convolution must be computed as a discrete approximation to the continuous form. The input signal, $x$, is taken to be piecewise constant using the supplied discrete values.

## 8  Further Comments

Workspace is internally allocated by nag_cwt_1d_real (c09bac). The total size of these arrays is ${2}^{13}+\left({\mathbf{n}}+{n}_{k}-1\right)$ double elements and ${n}_{k}$ Integer elements, where ${n}_{k}=k×\mathrm{max}\phantom{\rule{0.125em}{0ex}}\left({\mathbf{scales}}\left[\mathit{i}-1\right]\right)$ and $k=17$ when ${\mathbf{wavnam}}=\mathrm{Nag_Morlet}$ or $\mathrm{Nag_DGauss}$ and $k=11$ when ${\mathbf{wavnam}}=\mathrm{Nag_MexHat}$.

## 9  Example

This example computes the continuous wavelet transform of a dataset containing a single nonzero value representing an impulse. The Morlet wavelet is used with wave number $\kappa =5$ and scales $1$, $2$, $3$, $4$.

### 9.1  Program Text

Program Text (c09bace.c)

### 9.2  Program Data

Program Data (c09bace.d)

### 9.3  Program Results

Program Results (c09bace.r)