Learn R Programming

Momocs (version 1.0.0)

efourier_norm: Normalizes harmonic coefficients.

Description

efourier_norm normalizes Fourier coefficients for rotation, tranlation, size and orientation of the first ellipse.

Usage

efourier_norm(ef, start = FALSE)

Arguments

ef
list. A list containing $a_n$, $b_n$, $c_n$ and $d_n$ Fourier coefficients, such as returned by efourier.
start
logical. Whether to conserve the position of the first point of the outline.

Value

A list with the following components:
  • A vector of $A_{1->n}$ normalized harmonic coefficients
  • B vector of $B_{1->n}$ normalized harmonic coefficients
  • C vector of $C_{1->n}$ normalized harmonic coefficients
  • D vector of $D_{1->n}$ normalized harmonic coefficients
  • size Magnitude of the semi-major axis of the first fitting ellipse
  • theta angle, in radians, between the starting point and the semi-major axis of the first fitting ellipse
  • psi orientation of the first fitting ellipse
  • ao ao harmonic coefficient
  • co co Harmonic coefficient
  • lnef a list with A, B, C and D concatenated in a vector.

Details

See efourier for the mathematical background of the normalization.

Sometimes shapes do not 'align' well each others, and this is usually detectable on a morphospace on a regular PCA. You mat find 180 degrees rotated shapes or bizarre clustering. Most of the time this is due to a poor normalization on the matrix of coefficients, and the variability you observe may mostly be due to the variability in the alignment of the 'first' ellipsis which is defined by the first harmonic, used for the normalization. In that case, you should align shapes before efourier and with norm = FALSE. You have several options: coo_align, coo_aligncalliper, fgProcrustes either directly on the coordinates or on some landmarks along the outline or elsewhere on your original shape, depending of what shall provide a good alignment. Have a look to Momocs' vignette for some illustration of these pitfalls and how to manage them.

References

Claude, J. (2008) Morphometrics with R, Use R! series, Springer 316 pp.

Ferson S, Rohlf FJ, Koehn RK. 1985. Measuring shape variation of two-dimensional outlines. Systematic Biology 34: 59-68.

See Also

Other efourier: efourier_i, efourier_shape, efourier

Examples

Run this code
data(bot)
q <- efourier(bot[1], 24)
efourier_i(q) # equivalent to efourier_shape(q$an, q$bn, q$cn, q$dn)
efourier_norm(q)
efourier_shape(nb.h=5, alpha=1.2)
efourier_shape(nb.h=12, alpha=0.9)

Run the code above in your browser using DataLab