Counting the number of the unique value in each row of a matrix without using for loop

7 次查看(过去 30 天)
M = randi(21,[1000000,9]);
counter = zeros(size(A,1),1);
for j = 1 : size(A,1)
a = unique(Mat(j,:));
counter(j) = numel(a);
end
Hi
I have big size matrix (M in the above code) and I want to count the number of the unique value in each row.
I do not need the values and only the number of unique value is important to me.
The above for loop is a part of my program that needs to be repeated more and more times.
Because of the size of M, it is very time consuming and i dont want to use the above for loop.
Is there a faster alternative?
Thanks
  2 个评论
Stephen23
Stephen23 2021-1-30
The reason why I gave up on Stack Exchange was because of too much incorrect information or very poor understanding of how to use MATLAB effectively. This thread is a good example, when the most popular answer starts with the remarkably narrow-minded "You need to use unique function on each row...".

请先登录,再进行评论。

采纳的回答

Stephen23
Stephen23 2021-1-30
M = randi(9,5,7)
M = 5×7
5 4 8 4 9 6 9 3 2 5 9 8 1 8 4 4 8 7 3 3 1 6 7 4 6 6 3 1 6 3 4 2 5 9 7
N = 1+sum(diff(sort(M,2),1,2)~=0,2)
N = 5×1
5 6 5 5 7

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Logical 的更多信息

标签

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by