你如何规范直方图,使每个bin的总和为1?

cMi*_*nor 2 matlab

你如何规范直方图,A使每个bin的总和为1

将直方图除以bin的宽度,你如何绘制它

我有这个

dist        = rand(50)    
average     = mean(dist, 1);   
[c,x]       = hist(average, 15);    
normalized  = c/sum(c);
bar(x, normalized, 1)
Run Code Online (Sandbox Code Playgroud)

在这种情况下n = 50,

  • 得到均值和方差值^ 2的公式是什么?我们写N(mean, (variance^2) / 50),但是怎么样?
  • 你如何绘制均匀分布和正态分布?

直方图必须接近正态分布.

abc*_*bcd 6

这是规范概率密度函数的一种非常不寻常的方法.我假设你想要标准化,使曲线下面积为1.在这种情况下,这是你应该做的.

[c,x]=hist(average,15);
normalized=c/trapz(x,c);
bar(x,normalized)
Run Code Online (Sandbox Code Playgroud)

无论哪种方式,为了回答您的问题,您可以使用randn生成正态分布.您现在正在生成50x50均匀分布矩阵,并沿一维求和以逼近法线高斯.这是不必要的.要生成1000个点的正态分布,请使用randn(1000,1)或如果需要行向量,请对其进行转置或翻转数字.要生成均值mu和方差的高斯分布sigma2,并绘制其pdf,你可以做(​​例子)

mu=2;
sigma2=3;
dist=sqrt(sigma2)*randn(1000,1)+mu;
[c,x]=hist(dist,50);
bar(x,c/trapz(x,c))
Run Code Online (Sandbox Code Playgroud)

尽管可以使用统计工具箱中的专用函数完成这些操作,但这同样简单明了,不需要额外的工具箱.

编辑

我错过了你想知道如何生成均匀分布的部分.rand,默认情况下为您提供统一分布上的随机变量[0,1].为了从均匀分布之间获得rv [a, b],请使用a+(b-a)*rand

  • 概率密度函数的定义使得曲线下面积为1.在OP的情况下,出现的总数被归一化为1,而不是区域.它与`f/N`一样好,其中`N`是向量中的元素数(在这种情况下为50).当然,它是直方图,但不是密度.您可以在MATLAB中绘制出两个并查看差异.同意,OP从未要求密度,我的评论只是一个观察,与答案分开. (3认同)