双滤波方案对比的ECG心电信号去噪与性能评估系统
项目介绍
本项目是一个基于MATLAB开发的医学信号处理仿真系统,专门用于对比分析两类主流数字滤波器(FIR与IIR)在心电信号(ECG)去噪中的表现。系统通过模拟产生包含典型特征波形(P-QRS-T)的纯净心电信号,并人为叠加工频干扰、基线漂移和肌颤噪声,随后分别通过精心设计的FIR等纹波/窗口滤波器组与IIR巴特沃斯滤波器组进行处理。其核心意义在于通过量化的评价指标(SNR与RMSE)以及时频域的可视化对比,探讨不同滤波器架构对心电特征波形保真度的影响,为临床实时监控或便携式医疗设备提供算法选择依据。
功能特性
- 信号合成:内置合成器可模拟生成具有标准生理特征的心电周期,包括P波、QRS复合波和T波。
- 复杂噪声模拟:支持同时叠加50Hz工频干扰、由呼吸引起的低频基线漂移(0.3Hz和0.15Hz)以及高斯白噪声模拟的肌颤干扰。
- 频谱分析:利用快速傅里叶变换(FFT)分析信号在处理前后的频域分布特性。
- FIR滤波方案:采用线性相位FIR设计,通过零相位补偿技术(filtfilt)确保波形在去噪后不发生相位畸变。
- IIR滤波方案:采用计算效率高的巴特沃斯和陷波滤波器,模拟常规实时处理流程并展示其相位特性。
- 性能量化评估:自动计算并对比原始含噪信号与两组滤波方案的信噪比(SNR)和均方根误差(RMSE)。
- 多维度可视化:提供时域对比图、功率谱密度(PSD)对比图以及性能指标柱状图。
使用方法
- 启动MATLAB软件。
- 将系统脚本文件置于MATLAB当前工作路径。
- 在命令行窗口直接运行主程序脚本。
- 程序运行后将自动弹出两个图形窗口:
- 窗口一展示原始信号、含噪信号及两组滤波方案的时域恢复效果对比。
- 窗口二展示信号在频域的功率谱密度变化以及SNR指标的柱状对比。
- 检视MATLAB命令行输出的文本格式评估报告,查看具体的数值对标结果。
系统要求
- 运行路径:MATLAB R2016b 或更高版本。
- 必备工具箱:Signal Processing Toolbox(信号处理工具箱)。
- 硬件配置:标准PC即可,内存建议4GB以上以确保绘图流畅。
实现逻辑说明系统的执行逻辑遵循“生成-干扰-处理-评估”的闭环流程:
- 基础参数初始化:设定采样频率为1000Hz,信号时长为2秒,建立时间基准向量。
- 信号合成逻辑:通过正弦半波模拟P波和T波,通过三角形脉冲(自定义三角窗函数实现)模拟高陡度的QRS复合波,构成周期性的心电基准。
- 噪声注入:
- 50Hz正弦波模拟电力线干扰。
- 0.3Hz与0.15Hz低频正弦波合成模拟呼吸引起的基线缓慢上下摆动。
- randn函数产生的白噪声模拟肌肉抽动导致的高频杂波。
- FIR设计方案实现:
- 陷波:使用fir1设计200阶带阻滤波器。
- 高通:使用fir1设计400阶高通,截止频率0.5Hz,用于抑制基线。
- 低通:使用fir1设计100阶低通,截止频率40Hz,抑制高频。
- 执行:全部采用filtfilt(双向滤波)以抵消群时延,确保P-QRS-T特征点位置完全对齐。
- IIR设计方案实现:
- 陷波:利用iirnotch设计二阶陷波器。
- 高通与低通:分别设计2阶和4阶Butterworth滤波器。
- 执行:采用filter函数进行常规递归滤波,旨在观察其计算效率及产生的相位滞后现象。
- 指标统计:通过计算信号功率与噪声功率(处理后信号与原纯净信号之差)的比值对数获得SNR,通过差值平方根获得RMSE。
关键算法与实现细节分析
- 合成心电算法:系统并非简单使用预存数据,而是通过数学建模。P波和T波利用sin函数在指定时间切片内生成,QRS复合波则通过自定义的triang函数(1 - abs(normalized_index))生成,保证了实验的可控性和重复性。
- 零相位滤波技术:在FIR方案中,为了解决FIR滤波器阶数较高带来的延迟问题,系统引入了双向滤波逻辑,这在临床心电诊断中至关重要,因为它可以防止R波等关键特征点发生时间轴上的偏移。
- 滤波器架构对比:FIR方案重点展示了“波形保真度”,而IIR方案通过较低的阶数(2阶/4阶)展示了在较小计算资源消耗下达到陡峭截止特性的能力。
- 信噪比(SNR)计算:采用经典的功率比公式 10 * log10( Σ(clean^2) / Σ((noisy-clean)^2) ),能够精确反映滤波过程对有用成分的保留程度和对噪声的抑制强度。
- 频谱密度分析:通过20*log10(abs(FFT))转换到分贝刻度,清晰地展示了50Hz尖峰和低频抬升在滤波前后的消除情况。