Counting the number of the unique value in each row of a matrix without using for loop
6 ビュー (過去 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 件のコメント
Iuliu Ardelean
2021 年 1 月 30 日
編集済み: Iuliu Ardelean
2021 年 1 月 30 日
Your solution takes 10.6 seconds for me. One of the solutions in link above took 0.44 seconds.
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...".
採用された回答
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Logical についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!