Counting the number of the unique value in each row of a matrix without using for loop
    4 ビュー (過去 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 で Loops and Conditional Statements についてさらに検索
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!