MATLAB Answers

# Histogram with log Bin width

16 views (last 30 days)
Markus Similä on 3 Aug 2020
Edited: Markus Similä on 6 Aug 2020
I have a single column vector with values ranging from 0 to about 400 000.
I need to make a histogram from this data, which has a logarithmically changing bin size.
The height values in each bin should also be divided with the corresponding bins width.
How can this be done?
Advice would be appreciated,
Thanks

#### 0 Comments

Sign in to comment.

### Accepted Answer

Sean de Wolski on 3 Aug 2020
x = rand(1,10000)*100000;
bins = 10.^(0:5);
histogram(x, bins);
set(gca, "XScale", "log")

#### 1 Comment

Markus Similä on 4 Aug 2020
Thanks!
This sort of works. But does it divide the values by the width of each bin?

Sign in to comment.

### More Answers (1)

Markus Similä on 6 Aug 2020
Edited: Markus Similä on 6 Aug 2020
edges = 10.^(1:0.01:6);
[N,edges] = histcounts(x,edges,'Normalization','countdensity');
g = histogram('BinEdges',edges,'BinCounts',N);
set(gca, "Xscale", "log")
set(gca, "YScale", "log")
Allright, I'm going to answer my own question.
x is your data.
'countdensity' normalizes the data exactly how you want.
Make sure that the histogram command doesn't bin your data anymore,
as you have done it already in histcounts. :D

#### 0 Comments

Sign in to comment.

### Community Treasure Hunt

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

Start Hunting!