MATLAB histogram():绘制直方图(附带实例)
在 MATLAB 中,利用函数 histogram 可以创建直方图,调用格式如下:
【实例】创建直方图。在编辑器中编写以下程序并运行:

图 1 直方图
通过归一化,每个条形的高度等于在该 bin 间隔内选择观测值的概率,并且所有条形的高度总和为 1。
histogram(x) % 基于 x 创建直方图,使用自动分 bin 算法,然后返回均匀宽度的 bin % bin 可涵盖 x 中的元素并显示分布的基本形状 histogram(x, nbins) % 使用标量 nbins 指定 bin 的数量 histogram(x, edges) % 将 x 划分为由向量 edges 指定 bin 边界的 bin % 每个 bin 都包含左边界,但不包含右边界,最后一个 bin 除外 histogram('BinEdges', edges, 'BinCounts', counts) % 手动指定 bin 边界和关联的 bin 计数 histogram(C) % 通过为 C(分类数组)中的每个类别绘制一个条形来绘制直方图 histogram(C, Categories) % 仅绘制 Categories 指定的类别的子集 histogram('Categories', Categories, 'BinCounts', counts) % 手动指定类别和关联的 bin 计数
【实例】创建直方图。在编辑器中编写以下程序并运行:
x = randn(1000,1); nbins = 25; % 分类为 25 个等距 bin subplot(2,2,1) h = histogram(x, nbins); % 绘制直方图 counts = h.Values; % 求 bin 计数,输出略 subplot(2,2,2) h = histogram(x, 'Normalization', 'probability'); % 指定归一化的直方图 S = sum(h.Values); % 计算条形高度的总和,输出为 1 subplot(2,2,3) % 在同一图窗中针对每个向量绘制对应的直方图 x = randn(2000,1); y = 1 + randn(5000,1); h1 = histogram(x); hold on h2 = histogram(y); subplot(2,2,4) % 对直方图进行归一化,所有条形高度和为 1,使用统一的 bin 宽度 h1 = histogram(x); hold on h2 = histogram(y); h1.Normalization = 'probability'; h1.BinWidth = 0.25; h2.Normalization = 'probability'; h2.BinWidth = 0.25;运行程序后,输出如下图所示图形:

图 1 直方图
通过归一化,每个条形的高度等于在该 bin 间隔内选择观测值的概率,并且所有条形的高度总和为 1。