基于多分辨率小波分析的信号基线漂移去除系统
项目介绍
本项目实现了一套基于 MATLAB 的一维非平稳信号处理算法,专注于利用 离散小波变换 (DWT) 的多分辨率分析特性来消除信号中的 基线漂移 (Baseline Drift) 噪声。
在生物电信号(如 ECG 心电图、EEG 脑电图)或光谱数据采集过程中,由于呼吸、身体移动或仪器热漂移,常会引入低频趋势项。传统的高通滤波器可能会导致信号的关键特征发生相位失真。本项目采用小波分析方法,通过将信号分解为不同尺度的近似分量与细节分量,精确提取低频基线并予以去除,从而在保留高频细节特征(如 QRS 波群)的同时,高效还原纯净信号。
功能特性
- 高保真信号重构:利用 Symlets 小波基函数(sym8)优良的对称性和波形匹配能力,最大限度减少波形畸变。
- 多分辨率基线提取:通过 8 层小波分解,精确分离出频率低于 0.7Hz 的极低频漂移分量。
- 全流程模拟验证:内置心电信号模拟生成器,自动构建包含 QRS 复合波、0.05Hz-0.3Hz 混合基线漂移及高频随机噪声的测试数据。
- 多维性能评估:提供均方根误差 (RMSE) 和能量保留比指标,量化评估去噪效果。
- 可视化分析:集成时域波形对比、局部细节放大及低频频谱分析,直观展示漂移去除前后的信号差异。
系统要求
- MATLAB R2016b 或更高版本
- Wavelet Toolbox (小波工具箱)
- Signal Processing Toolbox (信号处理工具箱 - 推荐但不强制,视具体频谱分析函数需求而定)
算法原理与实现逻辑
本项目 main.m 脚本的核心实现流程严格遵循以下步骤:
1. 数据模拟与预处理
程序首先构建一个模拟环境以验证算法有效性。
- 纯净信号生成:通过高斯函数叠加模拟 ECG 的 P-QRS-T 波形特征,心率设定为 60 bpm。
- 噪声叠加:
*
基线漂移:合成 0.3Hz(模拟呼吸)和 0.05Hz(模拟体动)的正弦波。
*
瞬态噪声:叠加高频白噪声。
- 最终生成并处理的是
原始ECG + 混合基线漂移 + 随机噪声 的混合信号。
2. 小波参数配置
算法选用
Simlets 8 (sym8) 作为小波基函数,该基函数与生物电信号的形态相似度高,能有效避免滤波伪影。
- 分解层数设定:根据采样频率 ($Fs=360Hz$) 计算,设定分解层数为 Level = 8。
- 频率截止逻辑:第 8 层近似分量的频率范围约为 $0 - 360/2^9 approx 0 - 0.7Hz$。此设置确保了仅捕获基线漂移,而不损伤心电信号中有用的低频成分(如 T 波)。
3. 多分辨率分解与重构
使用
wavedec 函数对含噪信号进行多层离散小波分解,获取各层的细节系数 (Detail Coefficients) 和近似系数 (Approximation Coefficients)。
- 基线估计:不仅是简单的滤波,程序利用
wrcoef 函数,专门针对第 8 层的 近似分量 ('a') 进行重构。这个重构出的信号即为算法识别出的“低频基线趋势”。
4. 信号校正
采用
减法校正策略,即从原始含噪信号中直接减去重构的估计基线:
> 校正信号 = 原始含噪信号 - 小波重构基线
此方法相比于通过阈值处理细节系数的方法,能更直接、线性地剥离加性低频噪声,保留原始信号的高频纹理。
5. 结果评估与可视化
程序最后通过三个维度的图表展示处理结果:
- 子图 1 (时域全貌):展示原始含噪信号,并对比“真实设定的基线”与“算法提取的基线”,验证拟合精度。
- 子图 2 (细节对比):将校正后的信号与理想的纯净信号(含高频噪)进行对比,通过局部放大(2-6秒区间),验证 QRS 波幅和形状是否完整保留。
- 子图 3 (频域分析):利用 FFT 分析信号频谱,重点展示 0-5Hz 的低频区域,直观证明低频漂移能量已被有效抑制。
使用方法
- 确保 MATLAB 环境中已安装 Wavelet Toolbox。
- 将代码保存为
main.m。 - 直接运行脚本,程序将自动生成模拟数据、执行处理流程并弹出分析图表。
- 控制台将输出 RMSE 误差值及信号能量保留比。
关键代码细节分析
generate_synthetic_ecg(t):
这是内置的辅助函数,不依赖外部数据文件。它利用傅里叶级数原理的简化形式(多个高斯波包)在时域合成心跳周期,生成标准化的 ECG 电压信号。
这是算法的核心引擎。
wavedec 负责将时域信号拆解到不同频率子带;
wrcoef 则充当频率选择性重构器,只将最底层的低频信息还原回时域,从而分离出漂移轨迹。
代码中明确注释了层数选择的物理意义。对于 360Hz 的采样率,每一层分解将带宽减半。要隔离出 <1Hz 的基线,必须进行至少 8-9 层分解。代码中包含对
wmaxlev 的检查,防止分解层数超出信号长度允许的理论上限。