一、自适应滤波算法简介

1 最小均方算法

LMS是基于最小均方误差准则的一种自适应滤波算法, 其优点是它的简单性。一般来说, LMS算法包括2个基本过程:一个是滤波过程, 另一个是自适应过程。在滤波过程中, 滤波器计算其对输入信号的响应, 并且通过与期望响应比较, 得到估计的误差信号。在自适应过程中, 系统自动调整滤波器的权系数。其原理如图1。

【心电信号】基于matlab自适应滤波算法胎儿心电信号提取【含Matlab源码 953期】_自适应

图1 LMS原理框图

其中:x (t) 是输入信号;y (t) 是系统输出信号;d (t) 为期望信号;e (t) 为误差信号。计算方法如下:

【心电信号】基于matlab自适应滤波算法胎儿心电信号提取【含Matlab源码 953期】_算法_02

其中:μ是用来控制稳定性和收敛速度的步长因子;ω (t) 为系统的权系数;e* (t) 为e (t) 的共轭转置。通过 (5) 式求出y (t) , 代入 (6) 式求出e (t) , 再将e (t) 代入 (7) 式调整权系数, 直到‖e (t) ‖2最小时停止。

2 归一化最小均方算法

NLMS是为了解决LMS算法面临梯度噪声放大问题而提出的, 是对LMS算法的改进[5]。在NLMS算法中, 步长迭代方程为:

【心电信号】基于matlab自适应滤波算法胎儿心电信号提取【含Matlab源码 953期】_自适应_03

二、部分源代码

clear all ;
load foetal_ecg.dat
abdominal =foetal_ecg(:,2:6); %loading abdominal signals
thoraic =foetal_ecg(:,7:9) ; %loading thoraic signals
d= mean(abdominal,2); %Average of abdominal signals
x=mean(thoraic,2); %Average of thoraic signals
M=2500; %数据长度
N = 8; %order of the filter
mu = .0000006; %value of step size
iter=length(x); %迭代次数默认为输入信号长度
w=zeros(N,M); %每一行代表一个加权参量,每一列代表一次迭代,初始为 0
e=zeros(M,1); %误差序列, e(k) 表示第 k 次迭代时预期输出与实际输入的误差
% y 信号右移 N位,以便进行迭代时的加权运算
x1=zeros(N,1);
for i=N+1:(N+M-1)
x1(i)=x(i+1-N);
end
%调整滤波器系数的 LMS算法
for n=2:iter;
x2=x1(n:1:n+N-1);
y(n)=w(:,n-1).'*x2; %每次取 N个参考信号与权系数相乘得到噪声估计
e(n)=d(n)-y(n); %噪声抵消的输出
w(:,n)=w(:,n-1)+2*mu*x2*e(n); %权矢量迭代
end ;
%最后稳定后的胎儿心电信号
for n=2:iter;
x2=x1(n:1:n+N-1);

三、运行结果

【心电信号】基于matlab自适应滤波算法胎儿心电信号提取【含Matlab源码 953期】_matlab_04

四、matlab版本及参考文献

1 matlab版本

2014a

2 参考文献

[1] 沈再阳.精通MATLAB信号处理[M].清华大学出版社,2015.

[2]高宝建,彭进业,王琳,潘建寿.信号与系统——使用MATLAB分析与实现[M].清华大学出版社,2020.

[3]王文光,魏少明,任欣.信号处理与系统分析的MATLAB实现[M].电子工业出版社,2018.

[4]石岩岩,苟正品,张榆锋,张燕,陈秋英.基于经验模态分解自适应滤波的胎儿心电信号提取[J].生物医学工程与临床. 2010,14(01)