how to calculate number of unique element in array?
32 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Putri Basenda Tarigan
le 22 Nov 2020
Commenté : Putri Basenda Tarigan
le 22 Nov 2020
Hi all.
if I have matrix like:
c =
1 1
1 1
1 1
2 1
2 2
2 3
2 4
2 5
2 5
3 1
3 1
3 2
how can I calculate number of unique element in column 2 according to column 1?
for the above matrix, the result should be:
1 1
2 5
3 2
Thanks in advance
0 commentaires
Réponse acceptée
Ameer Hamza
le 22 Nov 2020
Modifié(e) : Ameer Hamza
le 22 Nov 2020
Try splitapply()
c = [
1 1
1 1
1 1
2 1
2 2
2 3
2 4
2 5
2 5
3 1
3 1
3 2]
out = [unique(c(:,1)) ...
splitapply(@(x) numel(unique(x)), c(:,2), c(:,1))]
or accumarray():
out = [unique(c(:,1)) ...
accumarray(c(:,1), c(:,2), [], @(x) numel(unique(x)))];
And if the second column also contain all positive integers in increasing order then you can just try
out = [unique(c(:,1)) ...
splitapply(@max, c(:,2), c(:,1))]
%
out = [unique(c(:,1)) ...
accumarray(c(:,1), c(:,2), [], @max)];
Plus de réponses (1)
Bruno Luong
le 22 Nov 2020
Modifié(e) : Bruno Luong
le 22 Nov 2020
c =[
1 1
1 1
1 1
2 1
2 2
2 3
2 4
2 5
2 5
3 1
3 1
3 2 ]
d=unique(c,'rows');
c1=d(:,1);
i=find([true; diff(c1)~=0; true]);
count=diff(i);
c1=c1(i(1:end-1));
t=table(c1,count)
0 commentaires
Voir également
Catégories
En savoir plus sur Cell Arrays dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!