Learn R Programming

Momocs (version 1.4.1)

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)

# S3 method for default dfourier(coo, nb.h)

# S3 method for Opn dfourier(coo, nb.h)

# S3 method for list dfourier(coo, nb.h)

# S3 method for Coo dfourier(coo, nb.h)

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

Arguments

coo

a matrix (or a list) of (x; y) coordinates

nb.h

numeric the number of harmonics to calculate

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
o <- olea %>% slice(1:5) # for the sake of speed
od <- dfourier(o)
od
op <- PCA(od)
plot(op, 1)

# 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