Frequency of data occurrence using histc
Show older comments
I have a matrix called data which is 40*40*50 and I want to find all the distinct numbers in the matrix and count their occurrences. This code below seems to work when data is 40*40*39 or smaller, but as soon as I try to run the code on the entire data matrix it starts giving 0.001 as the frequency for all of the unique occurrences
% code
out = [unique(data),histc(data(:),a)]
plot(a, histc(data(:),a));
I know that using histc is not recommended, but it was the easiest way I could find to do this.
Thanks for any and all help.
1 Comment
Megan
on 18 Oct 2019
what is data?
Answers (2)
Guillaume
on 10 Oct 2018
I presume that your numbers are integer (otherwise, you're playing dangerous games using unique with floating point values), in which case:
out = histcounts(data, 'BinMethod', 'integers');
2 Comments
Edward Jahoda
on 10 Oct 2018
Guillaume
on 10 Oct 2018
"some information on why its dangerous"
See the output of
unique([0.3, 0.1+0.1+0.1])
If you want 6 digits of precision, I would do this:
out = histcounts(floor(data * 1e6), 'BinMethod', 'integers');
to move back to integer bins.
Bruno Luong
on 10 Oct 2018
0 votes
You might take a look at uniquetol()
Categories
Find more on Multirate Signal Processing in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!