如何在matlab中绘制概率密度函数?
Posted
技术标签:
【中文标题】如何在matlab中绘制概率密度函数?【英文标题】:How to plot probability density functions in matlab? 【发布时间】:2013-01-27 13:49:32 【问题描述】:我需要从
中绘制一个均匀分布矩阵的概率密度函数U = rand (1,1000)
但我不能使用 ksdensity 函数。我试过这个:
term = 1000;
U = rand (1,term);
x=0:0.001:1;
for j = 2:term;
u_height(j) = u_height(j-1)+((abs(x(j)-U(j))<0.01/2)/0.01)/term;
n_height(j) = n_height(j-1)+((abs(x(j)-N(j))<0.01/2)/0.01)/term;
end
但它的绘图不正确
【问题讨论】:
你到底想做什么?plot(U/sum(U))
怎么了?
你考虑过直方图吗?见hist
和histc
。
@Junuxx,这行不通,请参阅:***.com/questions/5320677/…
@slayton:我明白你的意思,感谢您的更正。不过,OPs 方法似乎很复杂。
@Junuxx,是的,这个方法没有任何意义。
【参考方案1】:
函数ksdensity
应该可以正常工作。您需要指定 PDF 的范围是有限的,并使用框内核。
u = rand(10000,1);
ksdensity(u, 'Support', [0 1], 'kernel', 'box');
此外,您可以使用 histc
近似 pdf
u = rand(10000,1);
bins = 0:.05:1;
counts = hist(u, bins);
p = counts ./ trapz(bins, counts);
plot(bins, p);
【讨论】:
为什么推荐box
? (反对保持默认设置或使用epanechnikov
)
@DennisJaheruddin 实际上都很好,但是在弄乱了各种选项之后,我觉得盒子内核产生的估计更接近于均匀分布。
虽然这与我要找的很接近,但它不够精确,即使是 10,000 大小的向量。
@user2064077 请记住,这是对基础分布的估计。精度将取决于数据集的大小和质量。以上是关于如何在matlab中绘制概率密度函数?的主要内容,如果未能解决你的问题,请参考以下文章