【问题标题】:How to plot probability density functions in matlab?如何在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)) 怎么了?
  • 你考虑过直方图吗?见histhistc
  • @Junuxx,这行不通,请参阅:stackoverflow.com/questions/5320677/…
  • @slayton:我明白你的意思,感谢您的更正。不过,OPs 方法似乎很复杂。
  • @Junuxx,是的,这个方法没有任何意义。

标签: matlab distribution uniform


【解决方案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 请记住,这是对基础分布的估计。精度将取决于数据集的大小和质量。
猜你喜欢
  • 2011-08-11
  • 1970-01-01
  • 2021-06-28
  • 2012-11-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多