how to calculate number of unique element in array?

29 vues (au cours des 30 derniers jours)
Putri Basenda Tarigan
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

Réponse acceptée

Ameer Hamza
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
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)

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!

Translated by