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

pxiryf3j  于 2023-06-23  发布在  Matlab
关注(0)|答案(2)|浏览(318)

我需要绘制(酒吧)的PDF和估计的PDF。
一切都是从产生均匀随机信号开始的。

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

现在,我使用函数hist来绘制估计的PDF。

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

现在我需要在同一个图形上绘制PDF。我需要使用函数pdf
我试过P = pdf('unif',linspace(1,2,1000),1,2);
但是我迷失在参数之间,我需要绘制x的PDF,我该怎么做?

8ulbf1ek

8ulbf1ek1#

为了同时显示条形图和pdf,您可以使用命令hold on同时绘制两者。
更复杂的部分是使比例因子与实验和实际pdf的可比性。在dx为1(介于1和2之间)上的均匀分布恒定为1(因为pdf在其范围内积分为1)。因此,我们需要根据每个仓得到的频率值来缩放实验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

下面是结果图:

gopyfrb3

gopyfrb32#

MATLAB的histogram()函数有一个 normalization 选项,可以自动缩放以获得经验pdf形状。
有些人可能会发现这比手动缩放更容易。该命令很简单,具有非常方便的输入和输出:h = histogram(X,'Normalization','pdf')

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]);

相关问题