How to plot a normalised cumulative histogram

I've got a vector of data of length around 5000000. I'm trying to plot a cumulative histogram of this data. I've previously plotted a normalised histogram using the trapz command:
[f,z]=hist(CharPoly,1000000);
bar(z,f/trapz(z,f))
where CharPoly is the data vector. That worked fine but I'm now looking to plot a cumulative histogram from this data and I can't figure out how to incorporate either cumsum or cumtrapz into this.
Thanks!

 Réponse acceptée

Brendan Hamm
Brendan Hamm le 24 Avr 2015
Modifié(e) : Brendan Hamm le 24 Avr 2015
If using 2014b or higher you can use the histogram command:
histogram(CharPoly,'Normalization','cdf')
If prior to 2014b use hist and bar:
[f,z]=hist(CharPoly,1000000);
% Make pdf by normalizing counts
% Divide by the total counts and the bin width to make area under curve 1.
fNorm = f/(sum(f)*(z(2)-z(1)));
% cdf is no cumulative sum
fCDF = cumsum(fNorm);
bar(z,fCDF) % display
This is done from my head, but I believe this is correct.

3 commentaires

Riti Patel
Riti Patel le 28 Avr 2015
Thanks, I've tried that but the histogram turns out like this
I would have thought that, being a normalised cumulative histogram it would flatten out at 1? That's what I was aiming for as this is supposed to be modelling a probability distribution. Do you have any ideas?
Riti Patel
Riti Patel le 28 Avr 2015
Don't worry, I've sorted it!
Curiosity begs me to ask, What was the issue?

Connectez-vous pour commenter.

Plus de réponses (0)

Community Treasure Hunt

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

Start Hunting!

Translated by