MATLAB直方图全解析

news/2025/3/16 12:43:13/

直方图(Histogram)是数据可视化中最基础的图表之一,用于直观展示连续数据的分布特征。在MATLAB中,直方图不仅支持快速生成,还具备强大的数学运算和高度可定制的视觉效果,能够满足科研、工程和商业分析的多样化需求。

一、直方图的核心概念与数学原理

1. 直方图的结构与定义

直方图通过等宽区间(Bin)将数据划分为若干子集,统计每个区间内的观测频数(或频率),形成一系列相邻的矩形条。其核心参数包括:

  • 区间数(Number of Bins):决定直方图的分辨率和统计误差。
  • 区间宽度(Bin Width):与区间数互相关联,直接影响分布形态的表达。
  • 归一化方式:可选择显示频数(Count)或概率密度(Probability)。

2. 数学模型

3. 与相关图表的对比

图表类型优点缺点
直方图直观展示数据分布、易于实现依赖区间划分、掩盖细节信息
核密度估计图(KDE)无参数依赖、显示平滑分布对小样本敏感,存在过拟合风险
条形图适合离散数据对比难以展示连续变量分布

二、MATLAB基础直方图绘制

1. 使用histogram函数

(1) 基础语法
data = randn(1000,1);  % 生成正态分布数据
figure;
histogram(data);
title('基础直方图(默认参数)');
xlabel('数值');
ylabel('频数');
grid on;

 

(2) 关键参数设置
data = randn(1000,1);  % 生成正态分布数据
figure;
histogram(data);
title('基础直方图(默认参数)');
xlabel('数值');
ylabel('频数');
grid on;
% 自定义区间数与样式
histogram(data, ...'NumBins', 20, ...          % 设置区间数'FaceColor', [0.2 0.6 0.9], ...  % 填充颜色'EdgeColor', 'black', ...     % 边线颜色'FaceAlpha', 0.7, ...         % 透明度'BinWidth', 0.5 ...          % 指定区间宽度(与NumBins互斥)
);

 

2. 归一化与概率密度

data = randn(1000,1);  % 生成正态分布数据
figure;
histogram(data);
title('基础直方图(默认参数)');
xlabel('数值');
ylabel('频数');
grid on;
% 自定义区间数与样式
histogram(data, ...'NumBins', 20, ...          % 设置区间数'FaceColor', [0.2 0.6 0.9], ...  % 填充颜色'EdgeColor', 'black', ...     % 边线颜色'FaceAlpha', 0.7, ...         % 透明度'BinWidth', 0.5 ...          % 指定区间宽度(与NumBins互斥)
);
% 转换为概率密度(总面积=1)
histogram(data, 'Normalization', 'pdf');
hold on;% 叠加理论正态分布曲线
x = linspace(min(data), max(data), 100);
mu = mean(data);
sigma = std(data);
pdf_normal = normpdf(x, mu, sigma);
plot(x, pdf_normal, 'r-', 'LineWidth', 2);
legend('直方图', '理论正态分布');

 


三、实战案例:多维数据与高级应用

1. 多维数据分布对比

(1) 并排直方图
% 生成三组不同分布的数据
data1 = randn(1000,1);
data2 = rand(1000,1)*6 - 3;
data3 = trnd(5,1000,1);  % t分布(自由度为5)figure;
subplot(1,3,1);
histogram(data1, 'FaceColor', 'blue');
title('正态分布');
xlim([-5 5]);subplot(1,3,2);
histogram(data2, 'FaceColor', 'red');
title('均匀分布');
xlim([-5 5]);subplot(1,3,3);
histogram(data3, 'FaceColor', 'green');
title('t分布');
xlim([-5 5]);

 

(2) 重叠直方图
figure;
hold on;
histogram(data1, 'BinWidth', 0.5, 'FaceAlpha', 0.5, 'FaceColor', 'b');
histogram(data2, 'BinWidth', 0.5, 'FaceAlpha', 0.5, 'FaceColor', 'r');
histogram(data3, 'BinWidth', 0.5, 'FaceAlpha', 0.5, 'FaceColor', 'g');
xlabel('数值');
ylabel('频数');
legend('正态分布', '均匀分布', 't分布');
title('多分布重叠直方图');
hold off;

 

2. 累计直方图(Cumulative Histogram)

figure;
histogram(data, 'Normalization', 'cdf');  % 累积分布函数模式
hold on;
plot(x, normcdf(x, mu, sigma), 'r-', 'LineWidth', 2);  % 叠加理论CDF
title('累积分布直方图对比');
legend('经验CDF', '理论正态CDF');

 


四、进阶技巧与性能优化

1. 自动最佳区间数选择

MATLAB内置多种区间数计算规则,可通过'BinMethod'参数调用:

% 使用不同算法
methods = {'auto', 'sqrt', 'sturges', 'scott', 'fd'};
figure;
for i = 1:5subplot(2,3,i);histogram(data, 'BinMethod', methods{i});title(['BinMethod = ', methods{i}]);
end

 

2. 二维直方图(Histogram2)

% 生成二维正态分布数据
x = randn(10000,1);
y = x*0.5 + randn(10000,1)*0.5;% 绘制二维直方图
figure;
histogram2(x, y, ...'BinWidth', [0.3 0.3], ...'FaceColor', 'flat', ...  % 根据高度染色'ShowEmptyBins', 'on', ...'EdgeColor', 'none');
colormap hot;
colorbar;
xlabel('X');
ylabel('Y');
title('二维直方图(热力图风格)');

 


总结

MATLAB直方图功能远超基础的频数统计,通过灵活的区间划分规则、归一化选项以及与概率模型的结合,能够支撑从探索性数据分析到严格科研验证的全流程需求。通过本文提供的代码模板与高阶技巧,用户可快速实现复杂场景下的直方图分析与自动化报告生成。

 


http://www.ppmy.cn/news/1579566.html

相关文章

从零开始训练小型语言模型之minimind

文章目录 从零开始训练小型语言模型之minimind什么是minimind从小模型开始 从零开始训练小型语言模型之minimind 什么是minimind github: https://github.com/jingyaogong/minimind 目前市面上的大语言模型动辄上百亿参数,训练成本高昂。就算是自己想学习和研究&…

AI绘画--Checkpoint模型详解

一、Checkpoint简介 Stable Diffusion作为当前主流的AI绘画软件之一,由于其强大的稳定性和开放性深受广大AI爱好者的推崇,其生图原理是基于深度学习模型完成从提示词到图像的“神奇转换”。而Checkpoint模型正是SD的基础模型,在使用SD进行AI绘…

LLM自动化评测

使用的数据集:ceval-exam import requests from datasets import load_dataset, concatenate_datasets import re from tqdm import tqdm import re, time, tiktoken, ollama from ollama import ChatResponse from ollama import Optionsdef llm(model, query, te…

C++ STL算法函数 —— 应用及其操作实现

一、STL算法函数分类概述 STL算法库提供了大量实用函数,按功能可分为以下五类: 1. 不修改序列的操作 定义:这些算法不会改变容器中的元素,仅对数据进行查询或统计。 典型函数: 函数功能示例find(first, last, value…

鸿蒙初学者学习手册(HarmonyOSNext_API14)_UIContext(@ohos.arkui.UIContext (UIContext))

前言 Context是鸿蒙中及其重要的Api包括了非常多的接口和功能,而且在官方文档中也是优先推荐使用Context中的接口 在Stage模型中基本介绍 1. UI实例与窗口的一一关联 在Stage模型中,WindowStage或Window是用于管理窗口的类,它们通过loadC…

Jetson Nano NX 重装系统

本篇记录了自己刚拿到Jetson板子后,刻意去学习给板子重刷系统的过程,学会重装系统是玩嵌入式开发板的基操。 注意:我使用的是 Nvidia 官方 SDK Manager 给 Jetson 刷系统的,需要额外准备一台 linux 电脑(双系统或者虚拟…

常见的死锁情况分析

死锁 定义: 是指多个进程或线程在执行过程中,由于竞争资源或因通信的需要而产生的相互等待的状态,使得它们无法继续执行下去(单线程中使用不恰当也会导致死锁问题)。 如下为常见的死锁原因: a. 互斥条件…

【AI】内容生成式AI(AIGC)的深度分析与扩展

引言 随着人工智能(AI)技术的迅速发展,AI生成内容(AIGC)已经在多个领域表现出巨大潜力,改变了内容创作的方式。这篇文章将详细介绍AI生成内容的技术原理、应用领域、优缺点、未来趋势以及相关伦理问题&…