# histcounts error in place of histc

2 Ansichten (letzte 30 Tage)
Pramit Biswas am 19 Jan. 2018
Bearbeitet: Jan am 2 Feb. 2018
Objective: finding the frequency of unique elements in an array.
A = 
F = histc(A,unique(A))
% F = histcounts(A,unique(A))
Expected output is 1 for A= 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 Kommentare-1 ältere Kommentare anzeigen-1 ältere Kommentare ausblenden

Melden Sie sich an, um zu kommentieren.

### Antworten (3)

ANKUR KUMAR am 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 KommentarKeine anzeigenKeine ausblenden
Jan am 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

Melden Sie sich an, um zu kommentieren.

Sean de Wolski am 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 KommentarKeine anzeigenKeine ausblenden
Jan am 2 Feb. 2018
Bearbeitet: Jan am 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.

Melden Sie sich an, um zu kommentieren.

Jan am 2 Feb. 2018
Bearbeitet: Jan am 2 Feb. 2018
What a pity that the handy histc is deprecated now.
A = randi(5,1,15);
[uniqA, ~, iA] = unique(A);
N = histcounts(iA, 'BinMethod', 'integers');
Now the element uniqA(k) appears N(k) times.
This is fast, but limited to 65536 elements.
##### 0 Kommentare-1 ältere Kommentare anzeigen-1 ältere Kommentare ausblenden

Melden Sie sich an, um zu kommentieren.

### Kategorien

Mehr zu Startup and Shutdown finden Sie in Help Center und File Exchange

### Community Treasure Hunt

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

Start Hunting!