how to calculate number of unique element in array?
32 次查看(过去 30 天)
显示 更早的评论
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 个评论
采纳的回答
Ameer Hamza
2020-11-22
编辑:Ameer Hamza
2020-11-22
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)];
更多回答(1 个)
Bruno Luong
2020-11-22
编辑:Bruno Luong
2020-11-22
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 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Cell Arrays 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!