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!

 채택된 답변

Brendan Hamm
Brendan Hamm 2015년 4월 24일
편집: Brendan Hamm 2015년 4월 24일

1 개 추천

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

Riti Patel
Riti Patel 2015년 4월 28일
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 2015년 4월 28일
Don't worry, I've sorted it!
Curiosity begs me to ask, What was the issue?

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

질문:

2015년 4월 24일

댓글:

2015년 4월 28일

Community Treasure Hunt

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

Start Hunting!

Translated by