在同一图上绘制PDF和估计PDF

时间:2013-04-02 06:34:02

标签: matlab plot matlab-figure

我需要绘制(条形)PDF和估计的PDF。

一切都始于生成均匀的随机信号。

x = random('unif',1,2,1,1000); % between 1 and 2

现在绘制估计的PDF我正在使用函数 hist

[N,Mx] = hist(x,10); % 10 intervals
bar(Mx,N);

enter image description here

现在我需要在同一个数字上绘制PDF。我需要使用函数 pdf

我尝试了P = pdf('unif',linspace(1,2,1000),1,2);

但是我在参数之间迷失了,我需要绘制x的PDF,我该怎么办呢?

2 个答案:

答案 0 :(得分:2)

为了显示条形图和pdf,您可以使用命令hold on同时绘制两者。

更复杂的部分是使比例因子与实验和实际pdf相当。 dx为1(1到2之间)的均匀分布始终为1(因为pdf在其范围内积分为1)。因此,我们需要根据每个bin获得的频率值来缩放实验pdf。比例是Nbar / Nsamp。如果您的dx不等于1,则此缩放更改为Nbar /(Nsamp * dx)

Nsamp = 1000;
Nbar = 10;

xMin = 1;
xMax = 2;
dx = xMax-xMin;

x = random('unif',xMin,xMax,1,Nsamp); 

[N,Mx] = hist(x,Nbar); 
bar(Mx,N/(Nsamp*dx)*Nbar);

P = pdf('unif',linspace(xMin,xMax,Nsamp),xMin,xMax);
hold on;
plot(linspace(xMin,xMax,Nsamp),P,'--r');
hold off

以下是结果图:

enter image description here

答案 1 :(得分:0)

MATLAB的histogram功能是 normalization 选项,该选项会自动缩放以获得经验的pdf形状。

有些人可能会发现这比手动缩放更容易。该命令很简单,输入和输出都很方便:h = histogram(X,'Normalization','pdf')

Example of histogram function

N = 1000;
a = 1;
b = 2;
X = a + (b-a)*rand(N,1);   % X ~ Uniform(a,b)

figure, hold on, box on
h = histogram(X,'Normalization','pdf','DisplayName','Generated data');
p = plot([a; b],ones(2,1)./(b-a),'r-','DisplayName','U(1,2) PDF');
legend('show','Location','southoutside','Orientation','horizontal');
xlim([1 2]);