Learn R Programming

wavethresh (version 4.7.3)

wd3D: Three-dimensional discrete wavelet transform

Description

This function performs the 3D version of Mallat's discrete wavelet transform (see Mallat, 1989, although this paper does not describe in detail the 3D version the extension is trivial). The function assumes periodic boundary conditions.

Usage

wd3D(a, filter.number=10, family="DaubLeAsymm")

Value

An object of class wd3D.

Arguments

a

A three-dimensional array constructed using the S-Plus array() function. Each dimension of the array should be equal to the same power of two.

filter.number

This selects the smoothness of wavelet that you want to use in the decomposition. By default this is 10, the Daubechies least-asymmetric orthonormal compactly supported wavelet with 10 vanishing moments.

family

specifies the family of wavelets that you want to use. Two popular options are "DaubExPhase" and "DaubLeAsymm" but see the help for filter.select for more possibilities.

RELEASE

Version 3.9.6 Copyright Guy Nason 1997

Author

G P Nason

Details

This function implements a straightforward extension of Mallat's, (1989) one- and two-dimensional DWT. The algorithm recursively applies all possible combinations of the G and H detail and smoothing filters to each of the dimensions thus forming 8 different sub-blocks which we label HHH, GHH, HGH, GGH, HHG, GHG, HGG, and GGG. The algorithm recurses on the HHH component of each level (these are the father wavelet coefficients).

Making an analogy to the 2D transform where HH, HG, HG and GG is produced at each resolution level: the HG and GH correspond to "horizontal" and "vertical" detail and GG corresponds to "diagonal detail". The GGG corresponds to the 3D "diagonal" version, HGG corresponds to smoothing in dimension 1 and "diagonal" detail in dimensions 2 and 3, and so on. I don't think there are words in the English language which adequately describe "diagonal" in 3D --- maybe cross detail?

See Also

wd, imwd, accessD.wd3D, print.wd3D, putD.wd3D, putDwd3Dcheck, summary.wd3D, threshold.wd3D, wd3D.object, wr3D.

Examples

Run this code
#
# Generate some test data: 512 standard normal observations in an 8x8x8
# array.
#
test.data.3D <- array(rnorm(8*8*8), dim=c(8,8,8))
#
# Now do the 3D wavelet transform
#
tdwd3D <- wd3D(test.data.3D)
#
# See examples explaining  the 3D wavelet transform.
#

Run the code above in your browser using DataLab