MATLAB Answers


Superimposing Normal Distribution on Histogram

Asked by Lucy
on 22 Sep 2012


I'd like to superimpose a gaussian distribution over a histogram.

I am trying to use the histfit function, but following the histfit(x,n) format, where n is the number of bins, n must be a positive integer. I have (and must maintain) and value of n that is not an integer.

(I have to use a bin width of 0.5stdev of the data set. This results in me having 7.4623 bins.)

How do I overcome this problem?




No products are associated with this question.

1 Answer

Answer by Wayne King
on 22 Sep 2012
Edited by Wayne King
on 22 Sep 2012

Why do you say that you must have a number of bins that is not an integer? How can you have anything but a positive integer for the number of bins?

You can approximate pretty closely a bin width of 1/2*std(data)

     data = randn(1000,1);
     binwidth = 1/2*std(x);
     numbins = round(range(data)/binwidth);
     % now construct a histogram just to check bin width
     [~,binctrs] = hist(data,numbins);
     % look at bin width
     % compare to 1/2*std(data)

You should see there is very little difference between the bin width you want and what you get.

Now you can use that number of bins in histfit()


  1 Comment

It's perfect! However, Could you please explain why you can calculate number of bins by this formula. Many thanks

Join the 15-year community celebration.

Play games and win prizes!

Learn more
Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

MATLAB Academy

New to MATLAB?

Learn MATLAB today!