Analysis and synthesis filter banks used in dual-tree wavelet algorithms.

afb(x, af)
afb2D(x, af1, af2 = NULL)
afb2D.A(x, af, d)
sfb(lo, hi, sf)
sfb2D(lo, hi, sf1, sf2 = NULL)
sfb2D.A(lo, hi, sf, d)

Arguments

x

vector or matrix of observations

af

analysis filters. First element of the list is the low-pass filter, second element is the high-pass filter.

af1,af2

analysis filters for the first and second dimension of a 2D array.

sf

synthesis filters. First element of the list is the low-pass filter, second element is the high-pass filter.

sf1,sf2

synthesis filters for the first and second dimension of a 2D array.

d

dimension of filtering (d = 1 or 2)

lo

low-frequecy coefficients

hi

high-frequency coefficients

Details

The functions afb2D.A and sfb2D.A implement the convolutions, either for analysis or synthesis, in one dimension only. Thus, they are the workhorses of afb2D and sfb2D. The output for the analysis filter bank along one dimension (afb2D.A) is a list with two elements

lo

low-pass subband

hi

high-pass subband

where the dimension of analysis will be half its original length. The output for the synthesis filter bank along one dimension (sfb2D.A) will be the output array, where the dimension of synthesis will be twice its original length.

Value

In one dimension the output for the analysis filter bank (afb) is a list with two elements

lo

Low frequecy output

hi

High frequency output

and the output for the synthesis filter bank (sfb) is the output signal. In two dimensions the output for the analysis filter bank (afb2D) is a list with four elements
lo

low-pass subband

hi[[1]]

'lohi' subband

hi[[2]]

'hilo' subband

hi[[3]]

'hihi' subband

and the output for the synthesis filter bank (sfb2D) is the output array.

References

WAVELET SOFTWARE AT POLYTECHNIC UNIVERSITY, BROOKLYN, NY
http://taco.poly.edu/WaveletSoftware/

Author

Matlab: S. Cai, K. Li and I. Selesnick; R port: B. Whitcher

Examples

## EXAMPLE: afb, sfb
af = farras()$af
sf = farras()$sf
x = rnorm(64)
x.afb = afb(x, af)
lo = x.afb$lo
hi = x.afb$hi
y = sfb(lo, hi, sf)
err = x - y
max(abs(err))
#> [1] 2.04281e-14

## EXAMPLE: afb2D, sfb2D
x = matrix(rnorm(32*64), 32, 64)
af = farras()$af
sf = farras()$sf
x.afb2D = afb2D(x, af, af)
lo = x.afb2D$lo
hi = x.afb2D$hi
y = sfb2D(lo, hi, sf, sf)
err = x - y
max(abs(err))
#> [1] 5.395684e-14

## Example: afb2D.A, sfb2D.A
x = matrix(rnorm(32*64), 32, 64)
af = farras()$af
sf = farras()$sf
x.afb2D.A = afb2D.A(x, af, 1)
lo = x.afb2D.A$lo
hi = x.afb2D.A$hi
y = sfb2D.A(lo, hi, sf, 1)
err = x - y
max(abs(err))
#> [1] 3.730349e-14