R: Discrete Wavelet Transform (DWT)

dwt {waveslim} | R Documentation

## Discrete Wavelet Transform (DWT)

### Description

This function performs a level J decomposition of the input vector or time series using the pyramid algorithm (Mallat 1989).

### Usage

    dwt(x, wf="la8", n.levels=4, boundary="periodic")
    dwt.nondyadic(x)

### Arguments

`x` | a vector or time series containing the data be to decomposed. This must be a dyadic length vector (power of 2).
`wf` | Name of the wavelet filter to use in the decomposition. By default this is set to `"la8"`, the Daubechies orthonormal compactly supported wavelet of length L=8 (Daubechies, 1992), least asymmetric family.
`n.levels` | Specifies the depth of the decomposition. This must be a number less than or equal to log(length(x),2).
`boundary` | Character string specifying the boundary condition. If `boundary=="periodic"` the default, then the vector you decompose is assumed to be periodic on its defined interval, if `boundary=="reflection"`, the vector beyond its boundaries is assumed to be a symmetric reflection of itself.

### Details

The code implements the one-dimensional DWT using the pyramid algorithm (Mallat, 1989). The actual transform is performed in C using pseudocode from Percival and Walden (2001). That means convolutions, not inner products, are used to apply the wavelet filters.

For a non-dyadic length vector or time series, `dwt.nondyadic` pads with zeros, performs the orthonormal DWT on this dyadic length series and then truncates the wavelet coefficient vectors appropriately.

### Value

Basically, a list with the following components

`d?` | Wavelet coefficient vectors.
`s?` | Scaling coefficient vector.
`wavelet` | Name of the wavelet filter used.
`boundary` | How the boundaries were handled.

### Author(s)

B. Whitcher

### References

Daubechies, I. (1992) Ten Lectures on Wavelets, CBMS-NSF Regional Conference Series in Applied Mathematics, SIAM: Philadelphia.

Gencay, R., F. Selcuk and B. Whitcher (2001) An Introduction to Wavelets and Other Filtering Methods in Finance and Economics, Academic Press.

Mallat, S. G. (1989) A theory for multiresolution signal decomposition: the wavelet representation, IEEE Transactions on Pattern Analysis and Machine Intelligence, 11, No. 7, 674-693.

Percival, D. B. and A. T. Walden (2000) Wavelet Methods for Time Series Analysis, Cambridge University Press.

### See Also

`modwt`, `mra`.

### Examples

    ## Figures 4.17 and 4.18 in Gencay, Selcuk and Whitcher (2001).
    data(ibm)
    ibm.returns <- diff(log(ibm))
    ## Haar
    ibmr.haar <- dwt(ibm.returns, "haar")
    names(ibmr.haar) <- c("w1", "w2", "w3", "w4", "v4")
    ## plot partial Haar DWT for IBM data
    par(mfcol=c(6,1), pty="m", mar=c(5-2,4,4-2,2))
    plot.ts(ibm.returns, axes=FALSE, ylab="", main="(a)")
    for(i in 1:4)
      plot.ts(up.sample(ibmr.haar[[i]], 2^i), type="h", axes=FALSE,
              ylab=names(ibmr.haar)[i])
    plot.ts(up.sample(ibmr.haar$v4, 2^4), type="h", axes=FALSE,
            ylab=names(ibmr.haar)[5])
    axis(side=1, at=seq(0,368,by=23),
         labels=c(0,"",46,"",92,"",138,"",184,"",230,"",276,"",322,"",368))
    ## LA(8)
    ibmr.la8 <- dwt(ibm.returns, "la8")
    names(ibmr.la8) <- c("w1", "w2", "w3", "w4", "v4")
    ## must shift LA(8) coefficients
    ibmr.la8$w1 <- c(ibmr.la8$w1[-c(1:2)], ibmr.la8$w1[1:2])
    ibmr.la8$w2 <- c(ibmr.la8$w2[-c(1:2)], ibmr.la8$w2[1:2])
    for(i in names(ibmr.la8)[3:4])
      ibmr.la8[[i]] <- c(ibmr.la8[[i]][-c(1:3)], ibmr.la8[[i]][1:3])
    ibmr.la8$v4 <- c(ibmr.la8$v4[-c(1:2)], ibmr.la8$v4[1:2])
    ## plot partial LA(8) DWT for IBM data
    par(mfcol=c(6,1), pty="m", mar=c(5-2,4,4-2,2))
    plot.ts(ibm.returns, axes=FALSE, ylab="", main="(b)")
    for(i in 1:4)
      plot.ts(up.sample(ibmr.la8[[i]], 2^i), type="h", axes=FALSE,
              ylab=names(ibmr.la8)[i])
    plot.ts(up.sample(ibmr.la8$v4, 2^4), type="h", axes=FALSE,
            ylab=names(ibmr.la8)[5])
    axis(side=1, at=seq(0,368,by=23),
      labels=c(0,"",46,"",92,"",138,"",184,"",230,"",276,"",322,"",368))

[Package waveslim version 1.8.3 Index]