Learn R Programming

Momocs (version 1.0.0)

dfourier: Discrete cosinus transform

Description

Calculates discrete cosine transforms, as introduced by Dommergues and colleagues, on a shape (mainly open outlines).

Usage

dfourier(coo, nb.h, verbose = TRUE)
"dfourier"(coo, nb.h, verbose = TRUE)
"dfourier"(coo, nb.h, verbose = TRUE)
"dfourier"(coo, nb.h, verbose = TRUE)

Arguments

coo
a matrix (or a list) of (x; y) coordinates
nb.h
numeric the number of harmonics to calculate
verbose
whether to print messages and progress bar.

Value

a list with the following components:
  • an the A harmonic coefficients
  • bn the B harmonic coefficients
  • mod the modules of the points
  • arg the arguments of the points

References

  • Dommergues, C. H., Dommergues, J.-L., & Verrecchia, E. P. (2007). The Discrete Cosine Transform, a Fourier-related Method for Morphometric Analysis of Open Contours. Mathematical Geology, 39(8), 749-763. doi:10.1007/s11004-007-9124-6
  • Many thanks to Remi Laffont for the translation in R).

See Also

Other dfourier: dfourier_i, dfourier_shape

Examples

Run this code
data(olea)
## Not run:  # because it's long
# od <- dfourier(olea)
# od
# op <- PCA(od)
# plot(op, 1)
# ## End(Not run)
# dfourier and inverse dfourier
o <- olea[1]
o <- coo_bookstein(o)
coo_plot(o)
o.dfourier <- dfourier(o, nb.h=12)
o.dfourier
o.i <- dfourier_i(o.dfourier)
o.i <- coo_bookstein(o.i)
coo_draw(o.i, border='red')

#future calibrate_reconstructions
o <- olea[1]
h.range <- 2:13
coo <- list()
for (i in seq(along=h.range)){
coo[[i]] <- dfourier_i(dfourier(o, nb.h=h.range[i]))}
names(coo) <- paste0('h', h.range)
panel(Opn(coo), borders=col_india(12), names=TRUE)
title('Discrete Cosine Transforms')

Run the code above in your browser using DataLab