views:

54

answers:

2

I have a data which is 100x1 vector. How can I display its empirical pdf in Matlab? Also, if I want to compare the pdf of three vectors on the same graph, then how to do that?

Right now I am using pdfplot.m file to plot my empirical pdf, however when I want to compare the 3 distributions by using 'hold on', then firstly its not working and secondly all the distributions are in same color. Thanks!

EDIT: I don't want to plot cdf.

+1  A: 

hist:

hist(data)

or, if you want more control over how it is presented, use:

[n,x] = hist(data);
plot(x,n,'rx-'); %# just an example, plot the pdf with red x's and a line, 
                 %# instead of bars
figure;
plot(x, cumsum(n)/sum(n)); %# plot the CDF
Ofri Raviv
Ofri: Is there a way that I can retain my all 100 values in the vector and plot them as hist (or pdf)?
Harpreet
try hist(data,min(data):max(data)) or [n,x]=hist(data,min(data):max(data))
Ofri Raviv
@Ofri: _"try hist(data,min(data):max(data)) or [n,x]=hist(data,min(data):max(data))"_ - It doesn't work. Gives _out of memory_ error.
Harpreet
+4  A: 

What you are looking for is Kernel density estimation (also known as Parzen windows). Its implemented in KSDENSITY function in the Statistics toolbox:

data = randn(100,1);
ksdensity(data)

alt text

The Wikipedia entry above has a MATLAB example using a function submission on FEX

Amro
You rock Amro :) !!
Harpreet