doHClustering

(method of orientation)

sort orientations into clusters

Syntax

[c,center] = doHCluster(ori,'numCluster',n)
[c,center] = doHCluster(ori,'maxAngle',omega)

Input

ori

orientation

n

number of clusters

omega

maximum angle

Output

c

list of clusters

center

center of the clusters

Example

% generate orientation clustered around 5 centers
cs = crystalSymmetry('m-3m');
center = orientation.rand(5,cs);
odf = unimodalODF(center,'halfwidth',5*degree)
ori = odf.calcOrientations(3000);
 
odf = ODF  
  crystal symmetry : m-3m
  specimen symmetry: 1
 
  Radially symmetric portion:
    kernel: de la Vallee Poussin, halfwidth 5°
    center: Rotations: 5x1
    weight: 1
 
% find the clusters and its centers
tic; [c,centerRec] = calcCluster(ori,'method','hierarchical','numCluster',5); toc
Elapsed time is 6.370103 seconds.
% visualize result
oR = fundamentalRegion(cs)
plot(oR)
 
oR = orientationRegion  
 
 crystal symmetry:  432
 max angle: 62.7994°
 face normales: 14
 vertices: 24
 
hold on
plot(ori,c)
caxis([1,5])
plot(center,'MarkerSize',10,'MarkerFaceColor','k','MarkerEdgeColor','k')
plot(centerRec,'MarkerSize',10,'MarkerFaceColor','r','MarkerEdgeColor','k')
hold off
plot 2000 random orientations out of 3000 given orientations
%check the accuracy of the recomputed centers
min(angle_outer(center,centerRec)./degree)
ans =
   11.2772    0.2047    0.2268    7.7134    0.2552