Clustering data from index
Mostrar comentarios más antiguos
Good morning, I have a matrix like this
ID =
10032 10033
10140 10141
10604 10607
10610 10611
10615 10626
11199 11201
11200 11203
11279 11365
11283 11380
11605 11606
11635 11972
1168 1169
11 382
11 505
11 617
11 761
11 975
975 1320
3000 617
And I want to get all the families for which a same shared number is available for example a family will contain all these couples:
family = [11 382;
11 505;
11 617;
11 761;
11 975;
975 1320;
3000 617]
Do you have any idea about how to cluster this data?
Thanks in advance!
Respuestas (2)
KSSV
el 16 de Sept. de 2016
k = mode(ID(:,1)); % Gets most frequent number
idx = find(ID(:,1)==k) ; % get the indices where k=11 is
iwant = ID(idx,:)
1 comentario
Piero Poli
el 16 de Sept. de 2016
Editada: Piero Poli
el 16 de Sept. de 2016
Andrei Bobrov
el 16 de Sept. de 2016
[a,~,c] = unique(ID);
out = ID(any(ismember(ID,a(accumarray(c,1) > 1)),2),:);
2 comentarios
Piero Poli
el 16 de Sept. de 2016
Andrei Bobrov
el 18 de Sept. de 2016
function cl = fun_for_piero(ID)
[a,~,c] = unique(ID);
ii = reshape(c,size(ID));
k = 1;
i1 = 1;
cl{k} = [];
c = 1:numel(a);
while ~isempty(ii)
t = any(ismember(ii,i1),2);
if ~any(t)
k = k + 1;
cl{k} = [];
i1 = c(1);
else
p = unique(ii(t,:));
cl{k} = [cl{k};sort(a(p(:)))];
ii = ii(~t,:);
c = setdiff(c,p);
i1 = p(:);
end
end
Categorías
Más información sobre Cluster Analysis and Anomaly Detection en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!