-
Notifications
You must be signed in to change notification settings - Fork 0
/
findSuperClusterUnion.m
36 lines (26 loc) · 1.04 KB
/
findSuperClusterUnion.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
function SuperclusterUnion = findSuperClusterUnion(ClusterArray,clusterSize,iCluster)
% Extract cluster of interest.
thisCluster = ClusterArray(iCluster,1:clusterSize,clusterSize);
% Get maximum cluster size in ClusterArray.
maxClusterSize = size(ClusterArray,3);
% Assume all cluster could be super-clusters.
potentialCluster = true(size(ClusterArray));
for isize = 1:clusterSize
potentialCluster(:,:,isize) = false;
end
potentialCluster(iCluster,1:clusterSize,clusterSize) = true;
% Loop over all cluster sizes greater than thisCluster.
for isize = clusterSize+1:maxClusterSize
% Loop over all spins in thisCluster.
for ii = 1:clusterSize
% Get the spin inddex.
ispin = thisCluster(ii);
% Remove all clusters that do not contain ispin from examination.
potentialCluster(:,1:isize,isize) = potentialCluster(:,1:isize,isize) & any(ClusterArray(:,1:isize,isize)==ispin,2);
end
end
SuperclusterUnion = sort(unique(ClusterArray(potentialCluster)))';
if SuperclusterUnion(1)==0
SuperclusterUnion = SuperclusterUnion(2:end);
end
end