这里是根据你提供的 main.m 代码内容生成的 README.md 文件内容。
随机序列生成与功率谱密度分析系统
1. 项目简介
本项目是一个基于 MATLAB 开发的离散随机信号分析工具。它旨在实现随机噪声序列的生成,并对其进行深度的时域与频域特性分析。系统能够生成指定统计特性(均值、方差)的高斯白噪声,通过自相关函数评估信号的记忆特性,并分别利用“周期图法”和“韦尔奇法”计算功率谱密度(PSD)。该项目适用于数字信号处理(DSP)算法验证、通信原理教学演示以及随机过程特性的直观展示。
2. 功能特性
- 参数化随机信号生成:支持自定义序列长度、采样频率、目标均值及目标方差,利用线性变换生成符合要求的高斯分布随机序列。
- 结果可复现性:通过固定随机数种子,确保每次运行生成的噪声序列完全一致,便于对比分析。
- 时域相关性分析:计算并绘制信号的自相关函数(基于有偏估计),展示信号在不同时延下的相关程度。
- 双模式频域分析:
*
周期图法 (Periodogram):基于 FFT 直接计算,展示高分辨率但方差较大的原始谱估计。
*
韦尔奇法 (Welch's Method):利用加窗平均技术(Hamming窗),提供更平滑、方差更小的功率谱估计。
- 理论验证对比:在频谱图中自动绘制理论功率谱密度参考线,直观验证算法的准确性。
- 多维数据可视化:自动生成包含时域波形、自相关曲线、PSD 对比谱图的综合分析图表。
3. 系统要求
- MATLAB R2016a 或更高版本
- Signal Processing Toolbox(信号处理工具箱,用于
pwelch 和 xcorr 函数)
4. 使用方法
- 确保 MATLAB 环境已安装并包含信号处理工具箱。
- 将脚本文件保存到本地工作目录。
- 直接运行主函数
main。 - 程序将在控制台输出设定的均值/方差与实际统计值的对比结果,并弹出一个包含三个子图的综合分析窗口。
5. 核心算法与实现细节
本项目完全基于 main.m 的代码逻辑实现,具体流程如下:
5.1 系统参数初始化
系统首先设定基础参数:序列长度为 4096 点,采样频率为 1000 Hz。定义了目标均值为 0,目标方差为 2.0。时间轴构造基于采样间隔
dt = 1/Fs。
5.2 随机信号生成 (Signal Generation)
- 种子固定:使用
rng(42) 固定随机数生成器的状态,保证实验结果的一致性。 - 高斯噪声生成:首先生成标准正态分布序列 $N(0, 1)$。
- 线性变换:应用公式 $u(n) = mu + sigma cdot x$ 将标准序列变换为目标序列。其中 $sigma$ 取目标方差的平方根。
- 统计验证:计算生成数据的实际均值和方差,并打印到控制台以供校验。
5.3 时域分析 (Time Domain Analysis)
- 自相关计算:调用相关函数计算序列的自相关序列 $R_{uu}$。代码中明确使用了
'biased' 选项,计算的是有偏估计的自相关函数,这意味着相关值会随着滞后量的增加而通过 $1/N$ 衰减。 - 时延转换:将滞后点数(Lags)转换为实际的时间延迟(秒),便于物理意义上的理解。
5.4 频域分析 (Frequency Domain Analysis)
为了获取信号的功率谱密度(PSD),代码实现了两种不同的估计算法:
1. 计算信号的 FFT,点数取大于序列长度的最小 2 的幂次($Nfft$),以提高频域栅栏效应的改善。
2. 计算双边功率谱:利用公式 $|FFT|^2 / (N cdot Fs)$。
3. 转换为单边功率谱:截取前半部分频率分量,并将非直流分量乘以 2,以保持总功率守恒。
- 方法二:韦尔奇法 (Welch's Method)
1. 使用 MATLAB 内置的高级谱估计函数。
2.
窗函数:采用长度为 512 的汉明窗 (Hamming Window)。
3.
重叠率:设定为 50% 重叠 (Overlap),以减少方差并平滑谱图。
5.5 数据可视化与理论验证
绘图窗口包含三个子图:
- 时域波形:显示生成噪声的前 1 秒波形,展示其随机波动特性。
- 自相关函数:绘制基于有偏估计的自相关曲线,中心峰值反映信号能量,两侧衰减反映随机性。
- PSD 对比:
* 灰色曲线显示通过 FFT 直接计算的周期图,呈现较强的随机起伏。
* 红色曲线显示韦尔奇法的平滑结果,更清晰地反映谱趋势。
*
理论参考线:蓝色虚线标示了白噪声的理论单边 PSD 值,计算公式为 $2 cdot sigma^2 / Fs$(针对实信号的单边谱定义)。
6. 关键函数说明
- randn: 用于生成服从标准正态分布的伪随机数序列。
- xcorr: 用于计算序列的互相关或自相关。本项目中使用
'biased' 参数计算有偏自相关估计。 - fft: 快速傅里叶变换,将时域信号转换为频域信号,是计算周期图的基础。
- pwelch: 韦尔奇功率谱密度估计函数,通过分段加窗平均的方法降低谱估计的方差。
- nextpow2: 计算满足 $2^p ge N$ 的最小幂次 $p$,用于优化 FFT 计算效率。