A single misorientation describes one pair of crystals. A map contains thousands of such pairs. Their density in misorientation space is the misorientation distribution function, or MDF.
There are two MDFs, and confusing them changes the physical question:
- The boundary or correlated MDF uses misorientations between grains that actually touch.
- The uncorrelated MDF uses independently drawn orientations, whether or not their measurement points are neighbours.
The uncorrelated MDF is what the two textures alone imply. It is not a uniform distribution unless both textures are uniform. The boundary MDF also contains the effect of which orientations became neighbours. Comparing the two separates a preferred orientation relationship from an accidental consequence of texture.
This page assumes familiarity with misorientation theory, grain reconstruction, and kernel density estimation. The plotting frame below matches the specimen frame stored with this data set.
plottingConvention.default('y↑→x');
mtexdata forsterite silent
grains = calcGrains(ebsd);The Boundary Misorientation Distribution Function
First take the misorientation of every forsterite--enstatite boundary segment. The displayed summary identifies the mapping from the forsterite crystal frame to the enstatite crystal frame and reports 11,751 samples.
mori_boundary = grains.boundary('Fo','En').misorientationmori_boundary = misorientation (Forsterite → Enstatite)
size: 11751 × 1This is one sample per boundary segment, not one vote per neighbouring grain pair. A long boundary therefore contributes more samples than a short one. The result also depends on how finely the boundary was sampled.
calcDensity estimates the density, just as it does for a list of orientations. The halfwidth is the angular smoothing scale. A smaller value resolves sharper peaks but also more sampling noise.
mdf_boundary = calcDensity(mori_boundary,'halfwidth',5*degree)mdf_boundary = SO3FunHarmonic (Forsterite → Enstatite)
bandwidth: 48
weight: 1The result is an SO(3) function and supports everything such a function does. MTEX normalizes its mean density to one, so values are commonly read as multiples of a random distribution (mrd). Its maximum gives the preferred misorientation.
[peakMRD,preferredMori] = max(mdf_boundary);
peakMRDpeakMRD =
118.3380preferredAxis = round(axis(preferredMori))preferredAxis = Miller (222)
h k l
0 0 1preferredAngle = angle(preferredMori) ./ degreepreferredAngle =
89.9817The peak is 118.34 mrd at \(89.98^\circ\) about \((001)\) in the forsterite crystal frame. Forsterite and enstatite share lattice planes in this relationship, and it dominates the phase boundaries of this map.
An axis--angle section at \(90^\circ\) cuts through this maximum.
plotSection(mdf_boundary,'axisAngle',90*degree)
mtexColorbar
The narrow red spot at the middle of the lower edge is the \((001)\) peak. Most other axes in this section have density close to zero.
The Uncorrelated Misorientation Distribution Function
calcMisorientation draws random pairs of EBSD pixels without requiring them to be neighbours. By default it draws 100,000 pairs and rejects points closer than one percent of the map diagonal. Fixing the random seed makes the published example reproducible.
rng default;
mori_uncorrelated = calcMisorientation(ebsd('En'),ebsd('Fo'))mori_uncorrelated = misorientation (Forsterite → Enstatite)
size: 99978 × 1The summary reports 99,978 accepted pairs. These are pixel orientations, not grain mean orientations, so large phases and densely sampled regions contribute more strongly than small ones.
mdf_uncorrelated = calcDensity(mori_uncorrelated)mdf_uncorrelated = SO3FunHarmonic (Forsterite → Enstatite)
bandwidth: 25
weight: 1uncorrelatedPeakMRD = max(mdf_uncorrelated)uncorrelatedPeakMRD =
2.0566Its maximum is 2.06 mrd, not 118.34 mrd. The preferred boundary relationship is absent from independently paired pixels. The boundary peak is therefore a property of the boundary network, not something the two textures produce by themselves.
plotSection(mdf_uncorrelated,'axisAngle',90*degree)
mtexColorbar
The maximum is now a broad lobe rather than the narrow \((001)\) spot. The colorbar also shows that its scale is about two orders of magnitude lower.
The Uncorrelated MDF from Two ODFs
The uncorrelated MDF needs no individual orientations at all. It is completely determined by the two orientation distribution functions (ODFs). The ODFs below use the same pixel weighting as the direct sample.
odf_fo = calcDensity(ebsd('fo').orientations,'halfwidth',10*degree);
odf_en = calcDensity(ebsd('en').orientations,'halfwidth',10*degree); calcMDF computes their convolution. The argument order below gives the same forsterite-to-enstatite mapping as the boundary misorientations.
mdf_from_odfs = calcMDF(odf_en,odf_fo)mdf_from_odfs = SO3FunHarmonic (Forsterite → Enstatite)
bandwidth: 25
weight: 1This and the direct estimate describe the same uncorrelated population. Their relative difference is
relativeDifferencePercent = 100 * ...
norm(mdf_from_odfs - mdf_uncorrelated) ./ norm(mdf_uncorrelated)relativeDifferencePercent =
4.9397The difference is 4.94 percent in the \(L^2\) norm. The ODF route smooths each texture before convolution, whereas the direct route smooths the sampled pair differences once. Finite random sampling contributes as well; the difference does not indicate different physical content.
plotSection(mdf_from_odfs,'axisAngle',90*degree)
mtexColorbar
The broad maximum and the low-density patch on the right match the direct estimate above. The agreement is visible in both location and scale.
With one ODF, calcMDF gives the uncorrelated misorientations within one phase. The displayed antipodal: true records that a same-phase pair has grain exchange symmetry.
mdf_fo = calcMDF(odf_fo)mdf_fo = SO3FunHarmonic (Forsterite → Forsterite)
antipodal: true
bandwidth: 25
weight: 1Angle Distribution
An MDF is a function on a three-dimensional space. Integrating out the misorientation axis leaves the one-dimensional angle distribution.
close all
plotAngleDistribution(mori_boundary,'figSize','small')
hold on
plotAngleDistribution(mdf_from_odfs)
hold off
legend('boundary','uncorrelated')
The boundary histogram has an extra peak near \(90^\circ\). The uncorrelated curve has no matching spike, although it follows the broader trend of the histogram. An angle peak alone does not identify the complete orientation relationship because the axis has been integrated out.
Uniform orientations provide a third reference. Their angle distribution is not flat: large rotation angles occupy more of rotation space than small ones, and crystal symmetry limits the largest distinct angle. This geometry is illustrated in Plotting Rotations.
close all
plotAngleDistribution(mdf_from_odfs,'figSize','small')
hold on
plotAngleDistribution(ebsd('fo').CS,ebsd('en').CS)
hold off
legend('uncorrelated texture','uniform orientations','Location','best')
The orange curve is the texture-free baseline, not a horizontal line. The numbers behind the curves come from calcAngleDistribution(mdf) and calcAngleDistribution(ori). See Angle Distribution for their use.
Axis Distribution
The other marginal integrates out the angle and retains the misorientation axis. First consider the boundary misorientations.
plotAxisDistribution(mori_boundary,'smooth')
mtexColorbar
Their axes form a narrow maximum at \((001)\), consistent with the full MDF. The uncorrelated MDF gives a much broader distribution.
plotAxisDistribution(mdf_from_odfs)
mtexColorbar
The broad lobe covers much of the symmetry sector rather than collapsing onto the boundary relationship. The marginal is itself a spherical function, returned by calcAxisDistribution.
axisDistribution = calcAxisDistribution(mdf_boundary)axisDistribution = S2FunHarmonicSym (222)
bandwidth: 64References
- J. Pospiech, K. Sztwiertnia, and F. Haessner, The Misorientation Distribution Function, Texture, Stress, and Microstructure 6 (1983), 201--215, introduces the MDF as a three-dimensional distribution.
- J. K. Mackenzie, Second Paper on Statistics Associated with the Random Disorientation of Cubes, Biometrika 45 (1958), 229--240, derives the cubic random-disorientation baseline.
- A. Morawiec, Orientations and Rotations: Computations in Crystallographic Textures, Springer, 2004, develops rotation-space geometry and misorientation statistics.
Next
Continue with Axis Distribution and Angle Distribution for the two marginals and their symmetry-dependent baselines. Theory develops the underlying misorientation, while Twinning applies a preferred misorientation to individual boundaries.
Citing this page.
This page is part of the documentation of
MTEX, a free and open
source MATLAB toolbox for analyzing and modeling crystallographic textures.
It was written by The MTEX Developers and is published at
https://mtex-toolbox.github.io/MisorientationDistributionFunction.html.
If you use MTEX, or reuse text or figures from this page, in your research,
please cite
F. Bachmann, R. Hielscher, H. Schaeben: Texture Analysis with MTEX - Free and Open Source Software Toolbox, Solid State Phenomena 160 (2010), 63-68. 10.4028/www.scientific.net/SSP.160.63
BibTeX
@article{bachmann2010mtex,
author = {F. Bachmann and R. Hielscher and H. Schaeben},
title = {Texture Analysis with MTEX - Free and Open Source Software Toolbox},
journal = {Solid State Phenomena},
volume = {160},
pages = {63-68},
year = {2010},
doi = {10.4028/www.scientific.net/SSP.160.63},
url = {https://doi.org/10.4028/www.scientific.net/SSP.160.63}
}
Other papers describing specific MTEX methods are listed under Publications — please cite the one that best fits your application. The MTEX source code is licensed under the GNU General Public License v2.0; the text and figures of this documentation are licensed under CC BY 4.0, which permits reuse — including by automated systems — provided The MTEX Developers and this page are credited.