FFT谐波分析与频谱可视化系统
项目介绍
本项目是一个基于面向对象编程思想构建的专业信号处理工具,旨在为电力系统、机械振动监控和音频信号分析提供精准的频域分析方案。通过高度封装的类结构,程序能够自动完成从原始时域采样信号到频域谐波特征提取的全过程,包括信号加窗、幅值补偿、单边谱转换、谐波精确定位以及总谐波畸变率(THD)的定量计算。
功能特性
- 多类型窗函数支持:内置矩形窗(Rectangular)、汉明窗(Hamming)、汉宁窗(Hann)及布莱克曼窗(Blackman),有效抑制频谱泄露。
- 幅值恢复补偿机制:自动计算并补偿由于加窗处理导致的信号能量衰减,确保频谱分析得到的幅值具有物理准确性。
- 自适应谐波搜索:在理论谐波频率附近采用局部峰值搜索算法,能够有效处理由于非同步采样引起的频率偏移问题。
- 全自动指标计算:一键计算基波及各阶次谐波的幅值、相位、频率,并按照标准定义计算总谐波畸变率。
- 多维度可视化看板:集成时域波形、对数坐标全频谱图以及离散谐波火柴梗图,全方位展示信号特征。
系统要求
- 软件环境:MATLAB R2016b 或更高版本。
- 工具箱需求:无需额外工具箱,基于MATLAB基础函数库实现。
- 硬件建议:标准PC即可运行,内存建议4GB以上以处理长时间序列信号。
运行逻辑与功能说明
程序通过模拟生成的电力系统合成信号进行演示,核心处理逻辑如下:
1. 信号合成与初始化
程序首先构建一个包含基波(50Hz)及多阶次高次谐波(3次、5次、7次)的复杂信号。每个谐波分量均可独立设置幅值和初始相位,并叠加随机高斯白噪声以模拟真实的物理环境。
2. 加窗处理与幅值修正
在进行快速傅里叶变换前,程序根据配置对输入信号应用选定的窗函数。为了消除加窗对信号幅值的削弱,程序计算了窗函数的相干增益补偿系数,并在最终频谱中进行实时修正。
3. 快速傅里叶变换 (FFT) 流程
程序将时域信号转换为频域复数序列,并执行以下后续处理:
- 单边谱转换:截取0至采样频率一半的有效频段。
- 幅值计算:根据序列长度归一化幅值,并对除直流(DC)和奈奎斯特频率外的所有分量乘以2,以恢复单边谱的幅值能量。
- 相位计算:通过复数向量计算每个频率点的初始相位。
4. 谐波特征精准提取
程序根据给定的基波频率,自动遍历指定的谐波阶次。为了应对频谱中能量扩散到相邻频点的情况,程序并非直接提取理论点,而是在理论点周边的特定半径范围内搜索最大值点作为实际谐波点,记录其精确频率、幅值及相位。
5. 畸变率分析 (THD)
依据标准的THD定义,程序提取第2次及以上所有指定阶次谐波的有效值(RMS),计算其平方和的开方与基波有效值的比值,转化为百分比输出。
关键算法与实现细节
窗函数实现:通过数学公式生成对称的窗函数序列,与原始信号进行点乘。程序支持四种常见的标准窗口切换,满足从高频率分辨率到高幅值精度的不同分析需求。
局部峰值搜索算法:针对非整周期采样导致的频谱泄露,程序在理论频率(k * f0)周围定义了一个搜索窗口。该算法通过搜索索引区间内的最大幅值定义为谐波点,提高了系统在复杂采样条件下的鲁棒性。
可视化组件:
- 时域图:展示采样点的实时波动情况。
- 半对数频谱图:纵轴采用Log量纲,能够清晰地观察到被抑制的噪声底噪以及谐波峰值相对于噪声的显著水平。
- 谐波分布图:以火柴梗图形式直观展示各阶次谐波的幅值对比,并在柱体上方自动标注数值,便于用户直接读取分析结论。
使用方法
- 数据准备:将待分析的信号向量与采样频率输入到分析对象的构造函数中。
- 参数配置:通过对象属性设置所需的窗函数类型(如 'Hann')。
- 执行分析:调用相关方法执行FFT计算并提取指定范围内的谐波分量(需提供基波频率参考值)。
- 获取结果:通过计算接口获得THD数值,并调用绘图接口生成全套分析图表。