computes an ODF from individual orientations
The function calcDensity applies one of the following algorithms to compute an ODF from a list of orientations.
- direct kernel density estimation
- kernel density estimation via Fourier series
- 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