Gamma分布噪声生成与高斯参数分析系统
项目简介
本项目是一个基于MATLAB开发的随机信号处理工具,利用MATLAB强大的数值计算与统计分析能力,专注于生成并深度分析Gamma分布与高斯(正态)分布噪声信号。系统集成了高精度的随机数生成算法、多维度的统计特性评估以及专业的数据可视化功能,适用于通信系统多径衰落模拟、图像噪声建模及统计学教学演示等场景。
功能特性
- 大样本随机序列生成:支持一次性生成高容量(默认50,000点)的随机样本序列,确保统计分析的高置信度。
- Gamma分布噪声模拟:允许用户指定形状参数(Shape Parameter, k)和尺度参数(Scale Parameter, $theta$),生成符合特定Gamma分布的随机信号。
- 高斯分布噪声模拟:支持自定义均值($mu$)和标准差($sigma$),精确生成正态分布噪声。
- 全方面统计评估:
*
一阶与二阶统计量:自动计算序列的均值、方差和标准差。
*
高阶统计量:计算偏度(Skewness)以评估分布的不对称性,计算峰度(Kurtosis)以评估分布的拖尾特性。
- 理论与实测对比:内置理论值计算逻辑,实时对比样本统计值与理论参数,并输出相对误差百分比。
- 正态性自动判定:基于偏度和峰度指标,自动运行简易算法判断数据是否表现出显著的正态性。
- 数据可视化:
*
时域波形图:截取序列局部片段进行波形展示。
*
拟合优度分析:绘制归一化概率密度直方图,并同屏叠加理论PDF(概率密度函数)曲线,直观展示分布吻合度。
系统要求
- 软件环境:MATLAB R2016a 或更高版本。
- 工具箱依赖:Statistics and Machine Learning Toolbox(用于支持
gamrnd, gampdf, normpdf, skewness, kurtosis 等核心统计函数)。
使用方法
- 启动MATLAB,将当前目录切换至项目所在文件夹。
- 在MATLAB命令行窗口输入主程序文件名或点击“运行”按钮。
- 系统将首先清理工作环境,然后执行计算,最终在命令行窗口输出格式化的统计分析表格,并弹出一个包含四个子图的图形窗口。
实现细节与算法分析
项目核心逻辑封装在主函数及其三个本地辅助函数中,具体实现流程如下:
1. 系统初始化与参数配置
程序首先执行
clc,
clear,
close all 以确保运行环境纯净。
- 全局设置:定义样本序列长度 $N = 50000$。
- Gamma参数:设定形状参数为 3.0,尺度参数为 2.0。
- 高斯参数:设定均值为 0,标准差为 2.5。
2. 噪声生成模块
为了保证实验结果的可重复性,程序在生成随机数前通过
rng(42) 固定了随机种子。
- Gamma噪声:直接调用
gamrnd 函数生成。 - 高斯噪声:通过标准正态分布生成函数
randn 产生基础序列,再通过线性变换 $X = mu + sigma cdot Z$ 调整至目标分布。
3. 统计分析模块 (核心函数 analyze_statistics)
系统对生成的两组噪声序列分别进行以下统计计算:
- 利用
mean 和 var / std 计算基础统计量。 - 利用
skewness 计算偏度。 - 利用
kurtosis 计算峰度(MATLAB默认定义正态分布峰度为3)。 - 理论值验证:
* Gamma分布理论均值 $= k cdot theta$,理论方差 $= k cdot theta^2$。
* 高斯分布理论均值与方差直接取自输入参数。
4. 结果输出模块 (核心函数 print_results)
该模块负责将分析结果格式化输出到命令行:
- 展示“计算值”、“理论值”以及两者之间的“误差(%)”。
- 正态性判断逻辑:如果数据的偏度绝对值小于 0.1 且峰度与 3.0 的差值绝对值小于 0.2,系统将判定数据具有显著的正态性,否则判定为非正态。
5. 可视化模块
程序创建一个 1200x800 像素的图形窗口,划分为 2x2 的子图区域:
- 时域分析(子图1、2):调用辅助函数
plot_time_domain,为了保持波形清晰可见,仅截取并绘制序列的前1000个数据点,而非全部50000个点。 - 频域/分布分析(子图3、4):
* 使用
histogram 绘制统计直方图,并设置标准化模式为
'pdf'。
* 生成1000个等间距采样点,分别调用
gampdf 和
normpdf 计算理论概率密度曲线。
* 将实际直方图(柱状)与理论PDF(曲线)绘制在同一坐标系下,通过颜色区分(Gamma为蓝/红,高斯为黄/黑),方便用户直观对比。