matlab - 如何标准化直方图以使每个 bin 的总和为 1?

标签 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)

在本例中,n = 50

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

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

最佳答案

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

[c,x]=hist(average,15);
normalized=c/trapz(x,c);
bar(x,normalized)

无论哪种方式,要回答您的问题,您都可以使用 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))

虽然这些可以通过统计工具箱中的专用函数来完成,但这同样简单、简单并且不需要额外的工具箱。

编辑

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

关于matlab - 如何标准化直方图以使每个 bin 的总和为 1?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5303372/

相关文章:

matlab - wavwrite输出没有声音的文件

matlab - 拖放到 MATLAB 命令窗口

matlab - matlab 工具中的 nnstart 问题

matlab - Octave 图形格式化工具

matlab - 在Matlab中从WAV文件中消除噪音

MATLAB - 如何一起缩放子图?

matlab - matlab中的扩展算法实现

matlab - 当我尝试计算图像分割结果的准确性时,为什么我得到 0 作为输出?

java - 在 Android 上读取二进制文件

matlab - 如何在音频信号处理中创建汉明窗口