首页 > 编程笔记 > MATLAB笔记 阅读:21

MATLAB histogram():绘制直方图(附带实例)

在 MATLAB 中,利用函数 histogram 可以创建直方图,调用格式如下:
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。

相关文章