
histogram是MATLAB中用于绘制直方图的常用函数,功能强大,可灵活设置数据分布、颜色、归一化等参数。本文给出其基础用法和进阶用法
文章目录
✅ 基础用法(经典示例)
示例 1:绘制基本直方图
data = randn(1000, 1); % 生成正态分布数据
histogram(data);
title('标准正态分布的直方图');
xlabel('数值区间');
ylabel('频数');
运行结果:

示例 2:指定柱子个数(bins)
histogram(data, 50); % 强制使用50个柱子
结果:

示例 3:设置柱子的边界(edges)
edges = -4:1:4; % 每隔1一个区间
histogram(data, edges);
结果:

示例4:设置坐标轴和标题
figure;
histogram(data);
xlabel('误差');
ylabel('频次');
title('柱状图1')
运行结果:

✅ 进阶用法
示例5:归一化为概率密度(概率密度图)
histogram(data, 'Normalization', 'pdf'); % 概率密度
hold on;
x = -4:0.01:4;
plot(x, normpdf(x, 0, 1), 'r', 'LineWidth', 2); % 正态分布函数曲线
title('PDF归一化直方图与正态曲线');
'pdf'会使面积为 1,常用于分布拟合。
运行结果:

示例6:绘制多组数据直方图对比
data1 = randn(1000,1);
data2 = 2 + randn(1000,1);
histogram(data1, 'BinWidth', 0.5, 'FaceAlpha', 0.5); % 半透明
hold on;
histogram(data2, 'BinWidth', 0.5, 'FaceAlpha', 0.5);
legend('组1', '组2');
title('两组数据的直方图对比');
运行结果:

示例7:水平显示直方图(转换方向)
histogram(data, 'Orientation', 'horizontal');
运行结果:

示例 8:设置颜色、边框、透明度
figure;
h = histogram(data);
h.FaceColor = [0.2 0.6 0.1]; % 柱子填充颜色
h.EdgeColor = 'r'; % 红色边框
h.FaceAlpha = 0.7; % 透明度
运行结果:

示例 8:获取直方图数据用于分析
counts = h.Values; % 每个柱子的数量
edges = h.BinEdges; % 每个柱子的边界
fprintf('各个柱子的数量:%s',num2str(counts));
fprintf('各个柱子的边界:%s',num2str(edges));
运行结果:

✅ 三、常用参数总结
| 参数 | 功能 |
|---|---|
'BinWidth' | 指定每个柱子的宽度 |
'BinEdges' | 自定义每个柱子的边界 |
'Normalization' | 'count'(默认),'probability','pdf','cdf' |
'FaceColor' | 设置柱子的颜色 |
'EdgeColor' | 设置边缘线颜色 |
'Orientation' | 'vertical' 或 'horizontal' |
'FaceAlpha' | 设置透明度(0~1) |
✅ 四、推荐组合用法
data = randn(1000,1);
histogram(data, 'Normalization', 'pdf', ...
'BinWidth', 0.3, ...
'FaceColor', [0.1 0.5 0.9], ...
'EdgeColor', 'none', ...
'FaceAlpha', 0.6);
title('概率密度直方图');
运行结果:

❓补充:和 hist 的区别
histogram是推荐新方法(支持更多属性、对象化操作)hist是旧函数,不推荐新项目使用
例程获取
总结了一个mlx文件,直接运行后可以查看上述各段代码的运行结果,github链接:
https://github.com/evandworld/MATLAB_draw/blob/main/histogram_exam.mlx
如需帮助,或有导航、定位滤波相关的代码定制需求,请点击下方卡片联系作者
449

被折叠的 条评论
为什么被折叠?



