基于扩展卡尔曼滤波和参数自适应优化的心电信号降噪(MATLAB)

作品简介

算法步骤

① 加载数据与参数初始化

导入理想心电信号与含噪心电信号,设定采样频率128 Hz,计算信号长度及时间向量。定义心电动态模型的五个高斯函数参数(中心相位、幅度系数、宽度系数),设定心率角频率。

② 合成心电信号验证模型

利用欧拉法数值求解基于相位的微分方程,迭代生成相位序列与合成心电信号,绘制合成波形以验证模型有效性。

③ 扩展卡尔曼滤波(EKF)基本实现

初始化状态向量(相位、幅度)、状态估计协方差矩阵、过程噪声协方差矩阵及测量噪声方差。对每个采样点依次执行:

预测步骤:利用状态转移函数(相位更新、幅度欧拉积分)计算状态预测值,并计算雅可比矩阵以线性化预测协方差。

更新步骤:根据观测值与预测残差计算卡尔曼增益,修正状态估计,并更新协方差矩阵。

④ 过程噪声参数敏感性分析

分别设置较小的过程噪声协方差矩阵(R = 1e-6·I)和较大的过程噪声协方差矩阵(R = I),运行EKF并对比滤波效果,说明过程噪声设定对滤波性能的影响。

⑤ 网格搜索优化过程噪声参数

在相位噪声方差与幅度噪声方差的合理区间(0.01~0.07)内进行网格搜索,对每组参数执行EKF滤波,计算滤波后信号与理想信号的均方误差,选取使均方误差最小的最优参数组合,并保存对应的滤波结果。

⑥ 结果输出与可视化

分别绘制含噪信号、不同参数下的滤波信号及理想信号在同一坐标系下(局部放大5~10秒区间),保存图像并展示滤波效果对比。


创作时间: