hirarchical clustering of rotations and vectors
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.discreteSample(3000);
odf = SO3FunRBF (m-3m → xyz)
<strong>multimodal components</strong>
kernel: de la Vallee Poussin, halfwidth 5°
center: 5 orientations
Bunge Euler angles in degree
phi1 Phi phi2 weight
304.672 155.363 126.662 0.2
284.062 95.0427 23.3343 0.2
205.087 138.998 1.39789 0.2
171.504 48.816 331.922 0.2
76.7967 139.029 271.829 0.2
% find the clusters and its centers
tic; [c,centerRec] = calcCluster(ori,'method','hierarchical','numCluster',5); toc
Elapsed time is 3.018346 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,ind2color(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 =
0.1991 0.2406 0.2260 0.1129 0.2994