基于MATLAB的低通滤波器设计与信号分析系统
项目介绍
本项目是一个集成的数字信号处理演示系统。它通过MATLAB强大的数学计算和可视化能力,实现了从信号建模、滤波器设计到性能评估的全流程分析。系统旨在展示低通滤波器在消除高频干扰、提取低频有用信号中的核心作用,并对比研究IIR(巴特沃斯)与FIR(窗函数法)两种主流滤波算法的特性差异。
功能特性
- 信号建模与仿真:能够构建包含多频率分量的目标信号,并叠加确定性高频率噪声与高斯白噪声。
- 双重滤波器设计:支持五阶Butterworth低通滤波器(IIR型)与五十阶汉明窗低通滤波器(FIR型)的自动化设计。
- 时频双域分析:提供时域波形追踪和基于快速傅里叶变换(FFT)的频域能量分布分析。
- 性能指标量化:自动计算滤波前后信噪比(SNR),直观体现降噪效果。
- 专业可视化输出:生成包含幅频特性、相频特性、信号对比图以及频谱填充图在内的综合分析图表。
核心实现逻辑
系统的执行流程严格遵循信号处理的标准化步骤,具体如下:
- 系统参数定义:设定采样频率为2000Hz,信号总时长为1秒,建立精确的时间轴。
- 构建复合信号模型:
- 目标信号:生成5Hz和15Hz的正弦波组合。
- 噪声成分:叠加120Hz、300Hz的简谐噪声以及高斯白噪声。
- 数据合成:将纯净信号与总噪声相加形成含噪输入信号。
- 滤波器系数生成:
- 设定截止频率为40Hz,并根据采样率进行归一化映射。
- 利用巴特沃斯数学模型获得IIR滤波器的传递函数系数。
- 利用汉明窗函数法计算50阶FIR滤波器的脉冲响应系数。
- 实时信号滤波:应用离散时间滤波器函数,分别计算两种滤波器对输入信号的处理结果,得到平滑后的输出序列。
- 频域特征提取:通过FFT算法计算信号的幅值谱,并仅提取0到Nyquist频率范围内的单边频谱用以对比。
- 可视化分析:
- 绘制幅频与相频响应曲线,对比IIR的衰减斜率与FIR的相位线性度。
- 截取0.1s到0.4s的时域窗口,对比原始信号、理想信号与滤波后信号的拟合程度。
- 利用面积图展示频域内的干扰抑制情况。
- 打印评估报告:在控制台输出采样参数、设定频率以及滤波前后的信噪比增益。
关键算法与函数分析
- butter函数:执行巴特沃斯滤波器设计。该算法在通带内具有最大平坦特性,通过代码中的5阶配置实现了在40Hz附件的快速衰减。
- fir1函数(Hamming窗):利用窗函数法实现FIR滤波。相比IIR,这种算法保证了严格的线性相位,使得信号在滤波后不会产生非线性相位失真。
- filter函数:执行线性滤波操作。对于IIR滤波器采用差分方程实现,对于FIR滤波器则执行卷积运算。
- fft & abs:实现快速傅里叶变换并取模值。用于将复杂的时域波动转化为清晰的频率分量,验证120Hz及300Hz分量是否被彻底抑制。
- freqz函数:计算系统的频率响应。通过它可以直观地观察到滤波器在40Hz截止频率处的增益跌落情况。
- 信噪比(SNR)计算:通过求取信号能量与误差能量的比值并对数化,量化评价滤波系统对信号质量的提升效果。
使用方法
- 在MATLAB软件中打开主程序脚本。
- 运行脚本程序,系统将自动开始计算。
- 程序运行结束后,会自动弹出一个包含六个子图的可视化窗口,展示滤波器的频率特性、时域对比及频谱分布。
- 切换至MATLAB命令行窗口,查看自动生成的分析报告,对比IIR与FIR滤除噪声后的信噪比分贝值。
系统要求
- 软件环境:MATLAB R2016b 或更高版本。
- 工具箱需求:Signal Processing Toolbox(信号处理工具箱)。
- 硬件性能:常规计算设备,主频1GHz以上,内存2GB以上即可流畅运行。