1. 直方图基础:从数据分布到可视化入门
直方图是数据分析中最基础也最强大的工具之一。我第一次接触直方图是在处理一批传感器数据时,当时面对上万条温度读数完全无从下手,直到用histogram函数画出了数据分布,才瞬间看清了数据的全貌。Matlab的histogram函数之所以强大,在于它能自动完成从原始数据到可视化呈现的全过程。
基础用法其实非常简单,假设你有一组随机生成的数据:
matlab复制data = randn(1000,1); % 生成1000个标准正态分布的随机数
h = histogram(data);
这行代码会自动完成三件事:计算合适的区间划分(分箱)、统计每个区间的数据量、绘制出直观的柱状图。对于新手来说,完全不需要纠结参数设置,Matlab的自动分箱算法已经能给出不错的结果。
但实际工程中的数据往往没那么理想。我记得有一次分析电机振动数据,自动分箱的结果完全掩盖了关键特征。这时候就需要手动干预:
matlab复制edges = linspace(min(data),max(data),50); % 手动设置50个等距区间
h = histogram(data,edges);
通过调整分箱数量,可以控制直方图的"分辨率"。分箱太少会丢失细节,太多又会导致图形过于碎片化。根据我的经验,对于1000-10000条数据,30-50个分箱通常比较合适。
直方图最实用的特性是能直观展示数据分布形态。比如下面这段代码生成的两组数据:
matlab复制data1 = randn(10000,1); % 正态分布
data2 = rand(10000,1)*4-2; % 均匀分布
subplot(1,2,1); histogram(data1); title('正态分布');
subplot(1,2,2); histogram(data2); title('均匀分布');
即使不看代码,仅从图形形状就能立即判断出左侧是典型的正态分布(钟形曲线),右侧是均匀分布。这种直观性让直方图成为数据探索阶段不可或缺的工具。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 高级分箱策略:应对复杂数据场景
当处理真实世界的数据时,简单的等距分箱往往不够用。金融数据常有的"肥尾"现象、信号处理中的异常值、图像分析中的多峰分布,都需要更智能的分箱策略。
对于包含极端值的数据集,我推荐使用对数分箱。比如分析城市人口数据时:
matlab复制population = [10.3, 25.6, 8.7, 1500, 890, 45.2, 1200]; % 包含特大城市的样本
edges = 10.^(0:0.5:4); % 对数间隔的分箱边界
histogram(population, edges);
set(gca, 'XScale', 'log'); % 将x轴设为对数坐标
这样既能清晰展示大多数中小城市的数据分布,又不会因为个别
