Open Matlab File in the Editor MTEX

Bingham distribution and EBSD data

testing rotational symmetry of individual orientations

On this page ...
Bingham Distribution
The bipolar case and unimodal distribution
Prolate case and fibre distribution
Oblate case

Bingham Distribution

The quaternionic Bingham distribution has the density

where is a orthogonal matrix with unit quaternions in column and is a diagonal matrix with the entries describing the shape of the distribution. is the hypergeometric function with matrix argument normalizing the density.

The shape parameters give

in unit quaternion space. Since the quaternion +g and -g describes the same rotation, the bipolar distribution corresponds to an unimodal distribution in orientation space. Moreover we would call the circular distribution a fibre in orientation space.

The general setup of the Bingham distribution in MTEX is done as follows

cs = crystalSymmetry('1');

kappa = [100 90 80 0];   % shape parameters
U     = eye(4);          % orthogonal matrix

odf = BinghamODF(kappa,U,cs)
 
odf = ODF  
  crystal symmetry : 1, X||a, Y||b, Z||c
  specimen symmetry: 1
 
  Bingham portion:
     kappa: 100 90 80 0
    weight: 1
 
h = [Miller(0,0,1,cs) Miller(1,0,0,cs) Miller(1,1,1,cs)];
plotPDF(odf,h,'antipodal','silent');


% plot(odf,'sections',10)

The bipolar case and unimodal distribution

First we define some unimodal odf

odf_spherical = unimodalODF(idquaternion,crystalSymmetry,specimenSymmetry,'halfwidth',20*degree)
 
odf_spherical = ODF  
  crystal symmetry : 1, X||a, Y||b, Z||c
  specimen symmetry: 1
 
  Radially symmetric portion:
    kernel: de la Vallee Poussin, halfwidth 20°
    center: (0°,0°,0°)
    weight: 1
 
plotPDF(odf_spherical,h,'antipodal','silent')

Next we simulate individual orientations from this odf, in a scattered axis/angle plot in which the simulated data looks like a sphere

ori_spherical = calcOrientations(odf_spherical,1000);
close all
scatter(ori_spherical)

From this simulated ebsd data, we can estimate the parameters of the bingham distribution,

calcBinghamODF(ori_spherical)
 
ans = ODF  
  crystal symmetry : 1, X||a, Y||b, Z||c
  specimen symmetry: 1
 
  Bingham portion:
     kappa: 0 0.82366 1.9464 25.5402
    weight: 1
 

where U is the orthogonal matrix of eigenvectors of the orientation tensor and kappa the shape parameters associated with the U.

next, we test the different cases of the distribution on rejection

T_spherical = bingham_test(ori_spherical,'spherical','approximated');
T_oblate    = bingham_test(ori_spherical,'prolate',  'approximated');
T_prolate   = bingham_test(ori_spherical,'oblate',   'approximated');

t = [T_spherical T_oblate T_prolate]
t =
    0.0972    0.1257    0.2368

The spherical test case failed to reject it for some level of significance, hence we would dismiss the hypothesis prolate and oblate.

odf_spherical = BinghamODF(kappa,U,crystalSymmetry,specimenSymmetry)
 
odf_spherical = ODF  
  crystal symmetry : 1, X||a, Y||b, Z||c
  specimen symmetry: 1
 
  Bingham portion:
     kappa: 100 90 80 0
    weight: 1
 
plotPDF(odf_spherical,h,'antipodal','silent')

Prolate case and fibre distribution

The prolate case correspondes to a fibre.

odf_prolate = fibreODF(Miller(0,0,1,crystalSymmetry('1')),zvector,...
  'halfwidth',20*degree)
 
odf_prolate = ODF  
  crystal symmetry : 1, X||a, Y||b, Z||c
  specimen symmetry: 1
 
  Fibre symmetric portion:
    kernel: de la Vallee Poussin, halfwidth 20°
    fibre: (001) - 0,0,1
    weight: 1
 
plotPDF(odf_prolate,h,'upper','silent')

As before, we generate some random orientations from an model odf. The shape in a axis/angle scatter plot reminds of a cigar

ori_prolate = calcOrientations(odf_prolate,1000);
close all
scatter(ori_prolate)

We estimate the parameters of the bingham distribution

calcBinghamODF(ori_prolate)
 
ans = ODF  
  crystal symmetry : 1, X||a, Y||b, Z||c
  specimen symmetry: 1
 
  Bingham portion:
     kappa: 0 6.3866 50.8766 51.9261
    weight: 1
 

and test on the three cases

T_spherical = bingham_test(ori_prolate,'spherical','approximated');
T_oblate    = bingham_test(ori_prolate,'prolate',  'approximated');
T_prolate   = bingham_test(ori_prolate,'oblate',   'approximated');

t = [T_spherical T_oblate T_prolate]
t =
    1.0000    0.8842    1.0000

The test clearly rejects the spherical and prolate case, but not the prolate. We construct the bingham distribution from the parameters, it might show some skewness

odf_prolate = BinghamODF(kappa,U,crystalSymmetry,specimenSymmetry)
 
odf_prolate = ODF  
  crystal symmetry : 1, X||a, Y||b, Z||c
  specimen symmetry: 1
 
  Bingham portion:
     kappa: 100 90 80 0
    weight: 1
 
plotPDF(odf_prolate,h,'antipodal','silent')

Oblate case

The oblate case of the bingham distribution has no direct counterpart in terms of texture components, thus we can construct it straightforward

odf_oblate = BinghamODF([50 50 50 0],eye(4),crystalSymmetry,specimenSymmetry)
 
odf_oblate = ODF  
  crystal symmetry : 1, X||a, Y||b, Z||c
  specimen symmetry: 1
 
  Bingham portion:
     kappa: 50 50 50 0
    weight: 1
 
plotPDF(odf_oblate,h,'antipodal','silent')

The oblate cases in axis/angle space reminds on a disk

ori_oblate = calcOrientations(odf_oblate,1000);
close all
scatter(ori_oblate)

We estimate the parameters again

calcBinghamODF(ori_oblate)
 
ans = ODF  
  crystal symmetry : 1, X||a, Y||b, Z||c
  specimen symmetry: 1
 
  Bingham portion:
     kappa: 0 46.806 46.8701 48.3796
    weight: 1
 

and do the tests

T_spherical = bingham_test(ori_oblate,'spherical','approximated');
T_oblate    = bingham_test(ori_oblate,'prolate',  'approximated');
T_prolate   = bingham_test(ori_oblate,'oblate',   'approximated');

t = [T_spherical T_oblate T_prolate]
t =
    1.0000    1.0000    0.1944

the spherical and oblate case are clearly rejected, the prolate case failed to reject for some level of significance

odf_oblate = BinghamODF(kappa, U,crystalSymmetry,specimenSymmetry)
 
odf_oblate = ODF  
  crystal symmetry : 1, X||a, Y||b, Z||c
  specimen symmetry: 1
 
  Bingham portion:
     kappa: 100 90 80 0
    weight: 1
 
plotPDF(odf_oblate,h,'antipodal','silent')