图3-7 不同阶数下AR模型法进行功率谱估计
可以看到,在相同采样数据长度下阶数过小会导致频率成分的辨识出现偏差,阶数过大会使随机起伏变化密集和加剧,方差增大。在50阶的情况下效果较为理想,但阶数越高的情况下计算量同时也在增加,应该适当的进行选择。在相同AR模型阶数的条件下,采样数据越多,频率的分辨率也越高,但会出现波动。
由上述分析可以看出,AR模型法、burg算法估计出的功率谱相对经典的功率谱估计方法得出的结果方差较小,频率的准确性也相对较高。现代谱估计的分辨率可以不受样本长度的限制。这是因为对于给定的N 点有限长序列x(n), 虽然其估计出的自相关函数也是有限长的, 但是现代谱估计的一些隐含着数据和自相关函数的外推, 使其可能的长度超过给定的长度,不像经典谱估计那样受窗函数的影响。与经典谱估计结果比较,现代谱估计在分辨率和方差上都优于经典谱,而且现代谱线要平滑得多,且在采样数据短的情况下也非常适用。
四、自适应滤波器(LMS和RLS)
题目:请简述一下自适应滤波器(LMS和RLS),并任选下面的一题,(2)、(3)数据可从网上下载(MIT-BIH
数据库:
http://www.physionet.org/physiobank/database/mitdb),分析步长及指数加权因子对滤波结果的影响。同时给出迭代次数与滤波器系数,迭代次数与均方误差之间的关系曲线。(13分)
(1)利用自适应滤波器从宽带信号中提取单频信号。
s(t)是宽频信号, 设x(t)?s(t)?cos(2?ft)x(t)?s(t)?Acos(2?f1t??)?Bcos(2?f2t),
A,B, f1, f2任选,要求提取两个单频信号;同时对不同的信噪比的情况比较一下。
(2)消除心电图的电源干扰 (3)胎儿心电监护
- 16 -
现代信号分析
滤波技术是指从复杂的含有噪声的信号中提取出有用的所需信号,而滤波器是一个选频系统,让有用的所需信号以尽量小的衰减通过,其实我们可以把大部分的信号处理系统看作滤波器系统。滤波器可以分为经典滤波器和现代滤波器,也可以分为模拟滤波器和数字滤波器,而自适应滤波器是属于现代滤波器,它是相对固定滤波器而言。本题首先介绍自适应滤波器的概念和工作原理,然后对LMS和RLS两种算法进行介绍,随后以胎儿心电信号(FECG)的提取(题3)为例来介绍自适应滤波器的应用,并分析步长及指数加权因子对滤波结果的影响。 1. 自适应滤波器简介
自适应滤波器是指能够根据输入信号自动调整性能进行数字信号处理的数字滤波器。自适应滤波器在许多领域都有应用,如自适应天线系统、数字通信接收机、自适应噪声对消技术、系统建模等,本题的例子便是应用自适应滤波器进行自适应噪声对消技术。
自适应滤波器通常由两个部分组成,一部分是数字滤波器,用来完成希望的信号处理;另一部分是自适应算法,用来调节滤波器系数(或加权),如图3-1所示。
d(n) + ∑ - x(n) 参数可调数字滤波器 自适应滤波器算法 e(n) y(n) 图4-1 自适应滤波器的结构框图
如图,参数可调数字滤波器可以是FIR数字滤波器或IIR数字滤波器,也可以是格型数字滤波器。输入信号x(n)通过参数可调数字滤波器后产生输出信号(或响应)y(n),将其与参考信号(或称期望响应)d(n)进行比较,形成误差信号e(n)。e(n)(有时还要利用x(n))通过某种自适应算法对滤波器参数进行调整,最终使e(n)的均方值最小。根据算法的不同,可以将自适应滤波器分为:递推最小二乘(RLS)滤波器、最小均方差(LMS)滤波器、格型滤波器、无限冲激响应(IIR)滤波器等。
(1)LMS滤波器
最小均方误差(LMS)算法是由Widrow和Hoff提出的,具有计算量小、易于实现等优点在实践中广泛应用。LMS算法的基本思想:调整滤波器自身的参数,使滤波器的输出信号与期望输出信号之间的均方误差最小,系统输出为有用信号的最佳估计。实质上LMS可以看成是一种随机梯度或者随机逼近算法,可以写成如下的基本迭代方程:
- 17 -
M?1?Ty(k)?W(k)X(k?i)?i?i?0?? ?e(k)?d(k)?y(k)?W(k?1)?W(k)?2?e(k)X(k?i)i?i??其中μ为步长因子,是控制稳定性和收敛速度的参量,X(k)表示第k时刻参考信号矢量,
X(k)?[n(k),n(k?1)???n(k?M?1)],k为迭代次数,M为滤波器的阶数。d(k)表示第k时刻
的输入信号矢量,y(k)、e(k)分别表示第k时刻的输出信号与输出误差,W(k)表示k时刻权系数矢量,W(k)=[W(k,0),W(k,1)…W(k,M-1)]。从上式可以看出其结构简单、计算量小且稳定性好等优点,但固定步长的LMS算法在收敛速度、跟踪速率及权失调噪声之间的要求是相互矛盾的,为了克服其缺点,人们提出了各种变步长的LMS改进算法,主要是采用减小均方误差或者以某种规则基于时变步长因子跟踪信号的时变,其中有正规LMS算法(NLMS)、梯度自适应步长算法、自动增益控制自适应算法、符号-误差LMS算法、符号-数据LMS算法、数据复用LMS算法等。
自适应滤波器收敛的条件是0???1?max。其中?max是输入信号的自相关矩阵R的最大特征值。
μ的选取必须在收敛速度和失调之间取得较好的折中,既要具有较快的收敛速度,又要使稳态误差最小。它控制了算法稳定性和自适应速度,如果μ很小,算法的自适应速度会很慢;如果μ很大,算法会变得不稳定。
(2)RLS滤波器
RLS(Recursive Least-Square)算法是通过矩阵求逆引理而导出的,它对输入信号的自相关矩阵
Rxx(n)的逆矩阵进行递推估计更新,其迭代公式如下:
?e(n)?d(n)?xT(n)w?(n?1),?P(n?1)x(n)?g(n)?,?T??x(n)P(n?1)x(n) ??P(n)???1P(n?1)???1g(n)xT(n)P(n?1),???(n)?w?(n?1)?g(n)e(n)?w上式中,n是递推次数,输入为x(n),P(n)为信号自相关矩阵的逆,g(n)为增益矢量,误差为e(n),期望输出为d(n),权重因子为λ。
RLS算法能实现快速收敛,且其收敛速率不随输入向量x ( n)集平均相关矩阵R特征值的扩散度而改变。当工作于时变环境中时,这类算法具有极好的性能,但其实现都以增加计算复杂度和稳定性
- 18 -
现代信号分析
为代价。
2. 胎儿心电监护
胎儿心电图(Fetal Electrocardiogram,FECG)是研究胎儿心脏电生理活动的一项客观指标,反映了胎儿在孕期中的成长和健康状况。胎儿心电一般是从母亲腹部采集获得,不可避免地会含有许多噪声。首先,加在母体上的工频干扰;其次,母体心电(Maternal Electrocardiogram,MECG),而且与胎儿心电相比,它会强得多;最后,还有夹杂的除心电以外的其他生物电信号。虽然采集获得的信号含有许多种类的噪声,但经前期处理均可滤掉,或者得到很好的抑制,最后剩下的主要是母体心电。因此,我们采用自适应滤波消噪算法把混合信号中的母体心电信号去除。
自适应噪声抵消滤波器的结构框图如图3-2所示:
图4-2 自适应噪声抵消滤波器
上图中抵消器的“信号源”为s+n0,其中s为有用信号,n0为一个与信号s不相关的噪声,抵消器的“噪声源”为噪声n1,n1与信号s不相关,却以某种未知的方式与噪声n0相关,由图可以看出噪声n1经自适应滤波器输出y,再从原始输入s+n0中减去该输出,产生了系统的输出e=s+n0-y。本题中,信号源为母体腹部心电信号,噪声源为母体胸部心电信号MECG,系统输出e为胎儿心电信号FECG。
数据是从MIT-BIH数据库下载,进入网址http://www.physionet.org/cgi-bin/atm/ATM,在左侧Input选项里选择Database为胎儿心电图选项,Record项任选一个,Signals项选择为all,右侧Toolbox选择为Export signals as .mat。如图4.3所示。
图4-3 数据下载
设置完上面步骤后,会找到网页里有一个下载项,ecgca323_edfm.mat,点击下载。这就是对我们有用的数据,MATLAB打开后为一个6*10000的数据,我们只要对第一行和第三行的数据进行处理,分别为母亲胸部和腹部的数据信号。我们分别用LMS算法和RLS算法得到胎儿心电。
胎儿心电监护原理:监测胎儿心电,需要将母亲的心音及背景干扰去除。母亲的心音强度通常是胎儿心音的2倍到10倍,肌肉活动及胎儿运动产生的背景干扰也常常大于胎儿心音的强度。采用自适应对消的方法来监护胎儿心电图,将母亲胸部的信号作为参考输入,主要包括母亲心音和背景噪声,
- 19 -
也有胎儿的心音信号,如图4.4所示(数据为MIT-BIH数据库下载);从母亲腹部取出的信号作为原始输入,包括母亲心音、胎儿心音和背景干扰,如图4.5所示(数据为下载数据),可以看出,这个系统是一个有信号分量泄露到参考输入端的自适应对消系统。我们希望的结果是对消后母亲的心电信号的强度小于胎儿的心电信号强度,且胎儿的心电信号要比较清楚。 程序如下:
load('ecgca102_edfm.mat'); E=val(1,:)./10000; E1=val(3,:)./10000; thorax=E(1:3000); %胸部信号,参考信号 dn=thorax.'; abdomen=E1(1:3000);% 腹部信号,输入信号 xn=abdomen.'; figure(1); plot((1:3000),dn); xlabel('采样点数');ylabel('幅度'); title('母亲心电图'); figure(2); plot((1:3000),xn); xlabel('采样点数');ylabel('幅度'); title('胎儿心电图'); 母亲胎儿心电图:
图4-4 母亲胸部的心电图,作为期望信号 图4-5 胎儿的心电图,作为输入信号
3.1 用LMS算法得到胎儿心电图
比较图4.4和图4.5可以发现,胎儿的心电信号紧随着母亲的心电信号,这里采样点数选取了3000个,阶数采用20阶(即权系数的个数),步长因子?为改变的参数,分别设置为0.005,0.05,0.5。另外由于设置的阶数为20阶,所以权矢量就有20个,如果查看每一个与迭代次数的关系曲线,就要占很大篇幅,由于权系数(滤波器系数)更新的方程是一样的,所以它们的规律是相似的,这里只显示前三个权系数与迭代次数的关系曲线图。其用LMS算法得到胎儿心电图的MATLAB源代码如下(此处
- 20 -