histcounts error in place of histc
    9 views (last 30 days)
  
       Show older comments
    
Objective: finding the frequency of unique elements in an array.
A = [0]
F = histc(A,unique(A))
% F = histcounts(A,unique(A))
Expected output is 1 for A=[0] or 2 for A=[0 0], which is perfectly done by histc. As currently histc is not recommended. Use histcounts instead. I tried, but encountered error. Notes for change
0 Comments
Answers (3)
  ANKUR KUMAR
      
 on 1 Feb 2018
        Try this.
A=randi(5,1,15)
a=histcounts(A)
bar(unique(A),a)
If you are facing problem using histcounts, then you can find the frequency of unique elements without using histcounts
clc
clear
A=randi(5,1,15)
B=unique(A)
for ii=1:length(B)
id(ii)=length(find(A==B(ii)))
end
bar(B,id)
1 Comment
  Jan
      
      
 on 2 Feb 2018
				Faster:
id = zeros(1, length(B));  % Pre-allocate
for ii = 1:length(B)
  id(ii) = sum(A==B(ii));  % Without FIND
end
  Sean de Wolski
      
      
 on 1 Feb 2018
        The edges needs to be at least two elements. I usually do this to make one side (either negative or positive depending on context) open ended:
A = 0
F = histc(A,unique(A))
F2 = histcounts(A,[unique(A), inf])
1 Comment
  Jan
      
      
 on 2 Feb 2018
				
      Edited: Jan
      
      
 on 2 Feb 2018
  
			+1: This is the best translation of the arguments for the old histc to the new histcounts.
What a pity: For large arrays, creating the temporary vector [unique(A), inf] wastes time compared to the histc method. After all these years of using this function successfully, I'm running my own C-Mex function now instead of histcounts. A bad decision of TMW.
See Also
Categories
				Find more on Data Distribution Plots in Help Center and File Exchange
			
	Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


