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

New to MATLAB?


Asked by Mate 2u

Mate 2u (view profile)

on 19 Feb 2012

Hi everybody. I have an array.

1) I do a histfit(data) to get a histogram representation of my data with a normal distribution curve on top. I want a 3rd thing on this graph and that is a smooth line representing the data (so I want the curve representing the distribution of my data on top of this to compare with the normal distribution)



Mate 2u

Mate 2u (view profile)


No products are associated with this question.

1 Answer

Answer by Tom Lane

Tom Lane (view profile)

on 19 Feb 2012
Accepted answer

There is a ksdensity function that can produce a kernel-smooth density estimate. The issue is that it produces a density (integrates to 1) and the histogram is not a density (bar heights sum to 1). You could figure out the area of the histogram and re-scale the ksdensity values. Alternatively, here's a way to create the histgram, normal curve, and kernel density separately:

x = [randn(100,1); 4+randn(50,1)];
[hts,ctrs] = hist(x)
area = sum(hts) * (ctrs(2)-ctrs(1))
xx = linspace(-3,7);
hold on; plot(xx,area*normpdf(xx,mean(x),std(x)),'r-')
f = ksdensity(x,xx);
hold off



tiago (view profile)

on 11 Sep 2013

Hi, thanks a lot for the help with the code There is any way to know the r^2 of the normal curve?

Thanks in advance

Tom Lane

Tom Lane (view profile)

on 11 Sep 2013

The normal curve is computed from the raw data, which is one-dimensional rather than the two-dimensional x/y data normally associated with R^2. So while maybe you could make something up related to the bar heights and the density values, I don't think there is a good way to apply R^2 here.

Tom Lane

Tom Lane (view profile)

Contact us