rotation.calcDensity edit page

computes an ODF from individual orientations

The function calcDensity applies one of the following algorithms to compute an ODF from a list of orientations.

  1. direct kernel density estimation
  2. kernel density estimation via Fourier series
  3. Bingham estimation

Description

If the number of orientations is very large (more than about 10 * bandwidth^3) the Fourier method rounds the orientations onto a regular quadrature grid and computes the Fourier coefficients by a plain FFT instead of the NFFT, see SO3FunHarmonic.adjoint. The rounding error is at most half the grid spacing and hence negligible compared to the kernel halfwidth. Use the flag 'exact' to avoid any gridding.

Syntax

% use kernel density estimation with a 10 degree kernel
odf = calcDensity(ori,'halfwidth',10*degree)
% use grain area as weights for the orientations
odf = calcDensity(grains.meanOrientation,'weights',grains.area)
% use a specific kernel
psi = SO3AbelPoissonKernel('halfwidth',10*degree)
odf = calcDensity(ori,'kernel',psi)
% compute the ODF as a Fourier series of order 16
odf = calcDensity(ori,'order',16)

Input

ori orientation

Output

odf SO3Fun

Options

weights list of weights for the orientations
halfwidth halfwidth of the kernel function (default is 10 degree)
resolution resolution of the grid where the ODF is approximated
kernel SO3Kernel function (default -- SO3 de la Valee Poussin kernel)
order order up to which Fourier coefficients are calculated

Flags

silent no output
exact no approximation to a corser grid
Fourier force Fourier method
Bingham model bingham odf
noFourier no Fourier method

See also

orientation.calcFourierODF orientation.calcKernelODF orientation.calcBinghamODF ebsd_demo EBSD2odf EBSDSimulation_demo