我需要绘制(条形)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);
现在我需要在同一个数字上绘制PDF。我需要使用函数 pdf 。
我尝试了P = pdf('unif',linspace(1,2,1000),1,2);
。
但是我在参数之间迷失了,我需要绘制x的PDF,我该怎么办呢?
答案 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
以下是结果图:
答案 1 :(得分:0)
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]);