Count number of times value occurs
    6 vues (au cours des 30 derniers jours)
  
       Afficher commentaires plus anciens
    
    dan berkowitz
 le 12 Oct 2018
  
    
    
    
    
    Commenté : Bruno Luong
      
      
 le 6 Juil 2021
            Hi,
I have an array a = [ 1 2 3 2 2 3 1], and another array, b = [1:5].
How can I create an array c, that counts the number of times that each value in b occurs in a?
I want c = [2 3 2 0 0] (ie. 1/2/3/4/5 from b, appears 2/3/2/0/0 times in a)
Any help would be appreciated. Thanks,
DB
0 commentaires
Réponse acceptée
  Bruno Luong
      
      
 le 12 Oct 2018
        
      Modifié(e) : Bruno Luong
      
      
 le 12 Oct 2018
  
      Method for large a and b
[u,~,j] = unique(b(:));
[b, i] = ismember(a(:),u);
c = accumarray(i(b),1,size(u));
c = c(j)'
3 commentaires
  Benedict Greenwood
 le 6 Juil 2021
				Cheers Bruno great piece of code! Can I double-check why the bottom line is necessary? For my data the output is the same without the bottom line (although not transposed because of the apostrophe).
  Bruno Luong
      
      
 le 6 Juil 2021
				The last line is needed in case your data is not consecutive integers 1, 2, 3 ...
Plus de réponses (2)
  Image Analyst
      
      
 le 12 Oct 2018
        Yet another way to get the histogram is to use histcounts():
a = [ 1 2 3 2 2 3 1]
b = [1:5]
counts = histcounts(a, 'BinEdges', [b, inf])
1 commentaire
  Bruno Luong
      
      
 le 12 Oct 2018
				
      Modifié(e) : Bruno Luong
      
      
 le 12 Oct 2018
  
			@Dan: double check if you really want IA's method, for example with
a = [2];
b = [1 3];
counts = histcounts(a, 'BinEdges', [b, inf])
> counts =
       1     0
to me 1 and 3 from b appear 0 time in a.
  Bruno Luong
      
      
 le 12 Oct 2018
        
      Modifié(e) : Bruno Luong
      
      
 le 12 Oct 2018
  
      Assume a and b are row vectors, and one of them is not too big
c = sum(a(:)==b,1)
0 commentaires
Voir également
Catégories
				En savoir plus sur Data Distribution Plots 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!