自适应信号处理
前言
在这几十年里,数字信号处理技术取得了飞速发展,特别是字适应信号处理技术以其计算简单、收敛速度快等许多优点而广泛被使用。它通过起内部参数的最优化来自动改变其特性。自适应滤波算法在统计信号处理的许多应用中都是非常重要的。
本
主要对自适应滤波这一重要的课
展开研究和讨论,在算法原理、算法性能
和通过计算机仿真来说明其各自算法的优越性,在每一个算法中的通过收敛性、学习曲线和失调分析这三个方面来论述。
这里主要对LMS算法及一些改进的LMS算法(NLMS算法、变步长LMS算法、变换域LMS算法)之间的不同点进行了比较,在传统的LMS算法的基础上发展了LMS算法的应用。另一方面又从R LS算法的分析中对其与LMS算法的不同特性进行了比较。这篇论文主要围绕算法的优缺点、收敛性等方面进行了横向和纵向比较得出一些有益的结论。在自适应信号处理技术的基础上对其算法的简单在某些方面的应用作了说明。对当前自适应信号处理中比较前沿的盲自适应信号处理做了原理上的介绍和分析。
由于知识水平有限对卡尔曼滤波、自适应神经网络、QR分解等没有作为研究对象。在以后的工作中,在这些方面还需展开学习和研究。
目录
前言 (1)
目录 (2)
一绪论 (4)
1本论文的研究内容 (4)
2自适应滤波器的基本原理 (4)
3自适应滤波理论与算法 (5)
二最小均方(LMS)自适应算法 (8)
1 LMS算法的基本原理............... (8)
2 最小均方(LMS)自适应算法性能分析 (10)
3 仿真结果分析 (12)
三归一化LMS算法 (14)
1归一化LMS算法原理与性能分析 (14)
2仿真结果分析 (16)
四可变步长LMS自适应滤波算法 (18)
1可变步长LMS算法原理 (18)
2算法性能分析 (18)
五变换域LMS自适应算法 (21)
1基本原理 (21)
2与普通LMS自适应滤波器之间的关系 (22)
3变换域LMS算法的收敛性能 (22)
六最小二乘自适应滤波器 (24)
1递推最小二乘(R LS)算法 (24)
2仿真结果分析 (26)
3 RLS算法与LMS算法的比较 (27)
七格型自适应滤波器 (35)
八递归型(IIR型)自适应滤波器 (39)
九盲自适应均衡 (41)
1 Godard盲自适应均衡算法 (41)
2过采样与独立分量分析得盲均衡算法 (43)
十应用 (45)
1自适应均衡器 (45)
2 自适应陷波器 (46)
3 自适应滤波器 (46)
总结与感谢 (48)
参考文献 (49)
附录:matlab程序代码 (50)
附录:翻译 (57)
附录:翻译原文 (67)
一.绪论
1本论文的研究内容
自适应滤波是近30年以来发展起来的一种最佳滤波方法。它是在维纳滤波,kalman滤波等线性滤波基础上发展起来的一种最佳滤波方法。由于它具有更强的适应性和更优的滤波性能。从而在工程实际中,尤其在信息处理技术中得到广泛的应用。
自适应滤波的研究对象是具有不确定的系统或信息过程。“不确定”是指所研究的处理信息过程及其环境的数学模型不是完全确定的。其中包含一些未知因数和随机因数。
任何一个实际的信息过程都具有不同程度的不确定性,这些不确定性有时表现在过程内部,有时表现在过程外部。从过程内部来讲,描述研究对象即信息动态过程的数学模型的结构和参数是我们事先不知道的。作为外部环境对信息过程的影响,可以等效地用扰动来表示,这些扰动通常是不可测的,它们可能是确定的,也可能是随机的。此外一些测量噪音也是以不同的途径影响信息过程。这些扰动和噪声的统计特性常常是未知的。面对这些客观存在的各种不确定性,如何综合处理信息过程,并使某一些指定的性能指标达到最优或近似最优,这就是自适应滤波所要解决的问题。
2自适应滤波器的基本原理
所谓的自适应滤波,就是利用前一时刻以获得的滤波器参数的结果,自动的调节现时刻的滤波器参数,以适应信号和噪声未知的或随时间变化的统计特性,从而实现最优滤波。自适应滤波器实质上就是一种能调节其自身传输特性以达到最优的维纳滤波器。自适应滤波器不需要关于输入信号的先验知识,计算量小,特别适用于实时处理。
由于无法预先知道信号和噪声的特性或者它们是随时间变化的,仅仅用FIR和IIR两种具有固定滤波系数的滤波器无法实现最优滤波。在这种情况下,必须设计自适应滤波器,以跟踪信号和噪声的变化。
自适应滤波器的特性变化是由自适应算法通过调整滤波器系数来实现的。一般而言,自适应滤波器由两部分组成,一是滤波器结构,二是调整滤波器系数的自适应算法。自适应滤波器的结构采用FIR或IIR结构均可,由于IIR滤波器存在稳定性问题,因此一般采用FIR滤波器作为自适应滤波器的结构。图1示出了自适应滤波器的一般结构。
图中,x(n)为输入信号,y(n)为输出信号,d(n)为参考信号或期望信号,e(n)则是d(n)和y(n)的误差信号。自适应滤波器的滤波器系数受误差信号e(n)控制,根据e(n)的值和自适应算法自动调整。
图1 自适应滤波器的一般结构
3自适应滤波理论与算法
理论上讲,自适应滤波问题没有唯一的解。为了得到自适应滤波器及其应用系统,可以采用各种不同的递推算法,这些自适应算法都具有各自的特点,适用于不同场合。下面分别进行讨论。
1.3.1基于维纳滤波理论的方法
在线性滤波理论中,维纳滤波器所要解决的最小均方误差准则下的线性滤波问题。这种滤波方法是在已知信号与噪声的相关函数或功率谱的情况下,通过求解维纳-霍夫(wiener-hopf)方程,对平稳随机信号进行最优预测和滤波的。利用抽头延迟线做成的横向滤波结构的自适应滤波器,通常称为自适应横向滤波器,或自适应FIR滤波器,其抽头加权系数集正好等于它的冲激响应,在输入平稳随机信号时,所期望的响应信号与横向滤波器输出信号之间的差值的均方值
是滤波参数或权矢量的二次方函数,因此,自适应滤波器的均方误差与权矢量的关系是一个凹型的超抛物体的曲面,它具有唯一的极小下点。可以用梯度方法沿着该曲线面调节权矢量的各元素。得到这个均方误差的最小点,对应于此最小点的权矢量称为最佳维纳解。
为了得到自适应横向滤波器权矢量的递推关系,我们先使用最优化理论中的最陡下降法来修该正则方程,即由最佳维纳解定义的矩阵方程,应用均方误差的梯度矢量等于零,就可以得到最佳权矢量,用w0来表示,即
w0=R-1P (1.3.1)
其中,R为横向滤波器抽头输入信号的相关矩阵,P为抽头输入信号与所期望响应的互相关矢量。
式(1.3.1)就是维纳-霍夫方程的矩阵形式。满足式(1.3.1)的称为最佳权矢量或最佳维纳权矢量。其次,利用这些相关的瞬时值推导出梯度矢量的估计值,由此可得到最常用的一种算法,即所谓的最小均方(Least Mean Square)算法,简称LMS 算法。这种算法简单,且能达到满意的性能。它的主要缺点是收敛速度慢和对输入信号的相关矩阵特征值扩展度(即特征值最大值与特征值最小值之比)的变化较灵敏。
在非平稳的情况下,描述误差性能的超抛物体曲面将随着时间连续地变化,要求LMS算法能连续地跟踪误差性能的多维抛物体曲面的底部,只有当输入数据变化比LMS算法的学习速率较缓慢时,才能自适应跟踪,这就限制了LMS算法的应用。
1.3.2基于卡尔曼滤波理论的方法
为了使自适应滤波器能工作在平稳的或非平稳的环境下,可以借助于卡尔曼滤波器来推导自适应滤波算法。
卡尔曼滤波是线性无偏最小方差递推滤波,它的估计性能是最优的,而递推计算形式又能适应实时处理的需要。对于一个线性动态系统的卡尔曼滤波问题,可以用状态方程与测量方程来描述,前者以状态矢量来刻划系统的动态,后者表述系统中的测量误差。根据估计理论,可知最小误差熵估计准则与最小方差估计准则等价,而卡尔曼滤波是线性无偏最小方差估计,故有不同的方法推演卡尔曼的递推公式。但由于所学知识有限,在这里不进行深入的研究于讨论。仅作为一个知识点。在此考虑理论的完备性而进行简单的介绍。
对于平稳情况,可使用固定状态模型,它的权矢量或状态矢量等于一常数。对于非平稳情况,可使用噪声化状态模型,它的权矢量或状态矢量围绕着某均值作随机游程变化。据此,可利用卡尔曼滤波的递推求解法导出自适应滤波器更新权矢量的不同递推算法。这些算法比起LMS算法有极快的收敛速率;同时,在收敛过程具有好的坚韧性,因其收敛速率对特征值扩展度不灵敏。但是,这些算法的主要限制是其计算复杂度,因要求解卡尔曼滤波问题的矩阵公式,计算量大。
1.3.3基于最小二乘准则的方法
前面有维纳滤波器于卡尔曼滤波器所导出的自适应滤波算法的理论是基于统计概念的。而最小二乘估计算法是以最小误差平方和为优化目标,这里误差就是自适应滤波器的期望响应d(n)与真实滤波输出y(n)之差,故这类自适应滤波性能优化的准则是
min =min (1.3.2)
根据这类自适应滤波器的实现结构,可以得到以下三种不同的最小二乘自适应滤波算法:
(1) 自适应递归最小二乘算法
这种自适应滤波算法是指横向滤波器结构的递归最小二乘算法(简称R LS算法),它的推导是依赖于线性代数中矩阵的反演引理,与卡尔曼滤波算法有密切的关系。为了减少R LS算法的计算量,现已开拓出快速RLS算法和快速横向滤波器(FTF)算法等。
(2) 自适应最小二乘格型算法
(3) QR分解最小算法
1.3.4基于神经网络理论的方法
人工神经网络是一种模拟生物神经模型信号处理能力的计算结构。思维和记忆是人脑非常重要的功能,对脑的记忆机理,思维的知觉信息处理过程等基础理论的开拓性研究是发展神经网络理论并推动相关的认知科学发展的关键问题。
神经网络是由大量的神经元相互联接而成的网络系统,实质上它是一个高度非线性的动力学网络系统,这个系统具有很强的自适应、自学习、自组织能力,以及巨量的并行性、容错性和坚韧性,因而,它可以做许多传统的信号和信息处理技术所不能做的事。
二最小均方(LMS)自适应算法
1 LMS算法的基本原理
最小均方(LMS)自适应算法就是一中已期望响应和滤波输出信号之间误差的均方值最小为准的,依据输入信号在迭代过程中估计梯度矢量,并更新权系数以达到最优的自适应迭代算法。LMS算法是一种梯度最速下降方法,其显著的特点是它的简单性。这算法不需要计算相应的相关函数,也不需要进行矩阵运算。
图2 LMS自适应原理框图
令d(n)表示“期望输出信号”,定义误差信号e(n)为
e(n)=d(n)-y(n)=d(n)- wi(n)xi(n) (2. 1)
为了方便起见,将上述式子表示为向量形式,令信号矢量为:x(n)=[x1(n), x2(n),…, xM(n)]T。权矢量为:w(n)=[w1(n), w2(n),…, wM(n)]T。则上述式子表示为:
y(n)=w T(n)x(n) (2. 2)
误差序列可写为e(n)=d(n)-y(n)=d(n)-w T(n)x(n) (2. 3)
显然,自适应滤波器控制机理是用误差序列e(n)按照某种准则和算法对其系数{ wi(n)},i=1,2,…,M进行调节的,最终使自适应滤波的目标(代价)函数最小化,达到最佳滤波状态。
按照均方误差(MSE)准则所定义的代价函数是:
F(e(n))= =E[e2(n)]=E[d2(n)-2d(n)y(n)+y2(n)] (2.4)
将式(2.2),(2.3)代入(2.4),目标函数可写成
= =[d2(n)]-2w TP+w TRw (2. 5)
其中,R=E[x(n)xT(n)]是输入信号的自相关矩阵;P=E[d(n)x(n)]是期望信号与输入信号的互相关矢量。
由式(2.5)可见,自适应滤波器的代价函数是延迟线抽头系数的二次函数。当矩阵R和矢量P已知时,可以由权系数矢量w直接求其解。将式(2.5)对w求其偏导数,并令其等于零,同时假设R是非奇异的,由此可得代价函数最小的最佳滤波系数w0为
w0=R-1P (2.6)
这个解称为维纳解,即最佳滤波系数值。因为均方误差(MSE)函数是滤波系数w的二次方程,由此形成一个多维的超抛物面,这好像一个碗状曲面又具有唯一的碗底最小点,通常称之为自适应滤波器的误差性能曲面。当滤波器工作在平稳随机过程的环境下,这个误差性能曲面就具有固定边缘的恒定形状。自适应滤波系数的起始值{wi(0)},i=1,2,…, M是任意值,位于误差性能曲面上某一点,经过自适应调节过程,使对应于滤波系数变化的点移动,朝碗底最小点方向移动,最终到达碗底最小点,实现了最佳维纳滤波。
自适应过程是在梯度矢量的负方向接连的校正滤波系数的,即在误差性能曲面的最陡下降法方向移动和逐步校正滤波系数,最终到达均方误差为最小的碗底最小点,获得最佳滤波或准最优工作状态。
令代表n时刻的M×1维梯度矢量,M等于滤波器系数的数目;w(n)为自适应滤波器在n时刻的滤波系数或权矢量。按照最陡下降法调节滤波系数,则在n+1时刻的滤波系数或权矢量w(n+1)可以用下列简单递归关系来计算:
w(n+1)=w(n)+ [- ] (2.7)
式中是一个正常数,通常称它为自适应收敛系数或步长。
最小均方(LMS)算法是一种用瞬时值估计梯度矢量的方法,即
= =-2e(n)x(n)(2.8)
这种瞬时估计是无偏的,因为它的期望值E[ ]等于最陡下降法的梯度矢量,所以按照自适应滤波器滤波系数矢量的变化关系与梯度矢量估计的方向之间的关系,可以写出LMS算法的公式如下:
(n+1)= (n)+ [- ]= (n)+ e(n)x(n) (2.9)
若把式(2.1.8)代入式(2.1.9)中,则可以得到
(n+1)= (n)+ x(n)[d(n)-wT(n)x(n)]
=[I- x(n)xT(n)] (n)+ x(n)d(n) (2.10)
由上式可得到自适应LMS算法如同最陡下降法,利用时间n=0的滤波系数矢量为任意的起始值w(0),然后开始LMS算法的计算,其步骤如下:
1.由现在时刻n的滤波器滤波系数矢量估值(n),输入信号矢量x(n)及期望信号d(n),计算误差信号:e(n)=d(n)-xT(n) (n)
2.利用递归法计算滤波系数矢量的更新估值:(n+1)= (n)+ e(n)x(n)
3.将时间指数n增加1,回到第一步骤,重复上述计算步骤,一直到达稳定状态为止。
由此可见,自适应LMS算法简单,它既不需要计算输入信号的相关函数,又不要求矩阵之逆。因而得到了广泛的应用。但是,由于LMS算法采用梯度矢量的瞬时估计,它有大的方差,以致不能获得最优滤波性能。
2 最小均方(LMS)自适应算法性能分析
2.2.1自适应收敛性
自适应滤波系数矢量的初始值w(0)是任意的常数,应用LMS算法调节滤波系数具有随机性而使系数矢量w(n)带来非平稳过程。通常为了简化LMS算法的统计分析,假设算法连续迭代之间存在以下的充分条件:
(1)每个输入信号样本矢量的起始值w(0)与其过去全部样本矢量x(k),k=0,1,…,n-1是统计独立的,不相关的,即有E[x(n)xT(k)]=0, k=0,1,…,n-1。
(2)每个输入信号样本矢量x(n)与全部过去的期望信号d(k), k=0,1,…,n-1也是统计独立的,不相关的,即有E[x(n)d(k)]=0, k=0,1,…,n-1
(3)期望信号样本矢量d(n)依赖于输入过程样本矢量x(n),但全部过去的期望信号样本是统计独立的。
(4)滤波器抽头输入信号矢量x(n)与期望信号d(n)包含着全部n的共同的高斯分布随机变量。
由式(2.10)可知,自适应滤波器在n+1时刻的滤波系数矢量(n+1)依赖于三个输入:输入过程的过去样本矢量x(k),k=n,n-1,…,0;期望信号的以前样本值d(k), k=n,n-1,…,0;滤波系数矢量的起始值(0).
现将系数误差矢量得到
(n+1)= [I- x(n)xT(n)] [ +w0]+ x(n)d(n)
=[I- x(n)xT(n)] +w0+ [x(n)d(n)- x(n)xT(n) w0]
式中,w0是最佳滤波系数矢量,是误差矢量。如将w0移至灯饰左边,则(n+1)- w0等于系数误差矢量的更新值,于是上式可写成
=[I- x(n)xT(n)] + [ x(n)d(n)- x(n)xT(n) w0] (2.11)
对上式两边取数学期望,得到
E[ ]=(I- R)E[ ]+ (P-R w0) (2.12)
由此得到,要使LMS算法收敛于均值,必须使步长参数满足下列条件:
0<<2/ (2.13)
这里是相关矩阵R的最大特征值。在此条件下,当迭代次数n接近于∞时,自适应滤波系数矢量w(n)近似等于最佳维纳解w0。
2.2.2平均MSE—学习曲线
最陡下降法每次迭代都要精确计算梯度矢量,使自适应横向滤波器权矢量或滤波系数矢量w(n)能达到最佳维纳解w0,这时滤波器均方误差(MSE)为最小,即
ξmin= -w Tp (2.14)
式中,是期望信号d(n)的方差。
学习曲线定义为均方误差随迭代计算次数n的变化关系,如式(2.15)所描述的包含指数项之和:
ξ(n)= ξmin + (2.15)
式中每个指数项对应的固有模式,模式的数目等于滤波加权数。其中1- <1,故当n→∞时,则最陡下降法均方误差ξ(∞)=ξmin.但LMS算法用瞬时值估计梯度存在误差的噪声估计,结果使滤波权矢量估值(n)只能近似于最佳维纳解.这意味着滤波均方误差ξ(n)随着迭代次数n的增加而出现小波动地减少,最后,ξ(∞)不是等于ξmin而是稍大于其值。见下图:
图3 学习曲线
如果步长参数μ选用得越小,则这种噪化指数衰减曲线上的波动幅度将越小,即学习曲线的平滑度越好。
2.2.3失调
在自适应滤波器中,失调Θ是衡量起滤波性能的一个技术指标,它被定义为总体平均超量均方误差值ξex(∞)与最小均方误差值ξmin之比,即
Θ=E[ξex(∞)]/ξmin (2.16)
或Θ= /(2- ) (2.17)
通常μ值很小,因此,失调又可近似表示为
Θ= (2.18)
自适应滤波器LMS算法的稳态失调与步长μ成正比.如果把算法的总体平均学习曲线的时间常数(τmse)av写成2μ的逆数,而平均特征值应等于,则滤波器稳定失调Θ又可写成
Θ= (2.19)
以上表明:
(1) 失调为自适应LMS算法提供了一个很有用的测度,比如,10%失调意味着自适应算法所产生的总体平均MSE高于最小均方误差的增量值为10%;
(2) 失调是随着滤波系数数目线性增加的;
(3) 失调可以做得任意小,只要选用大的时间常数(τmse)av,也就是小的步长值即可。
但是,滤波器自适应收敛过程需要长的时间,影响了滤波器的自学习、自训练的速度,所以,自适应滤波器LMS算法的失调与自适应收敛过程之间存在矛盾。
3 仿真结果分析
(a)(b) (c)
图4 仿真结果
从图4(a)中可以得到实际信号的输出在坐标0的范围波动,而系统的输出大部分在(0.5,-0.5)之间。少部分在它之外波动。随N的增加而波动范围变小。
从图4(b)中可以得到随步长参数的减少,LMS算法的收敛速率相应减少。同时也影响学习曲线的变化。误差曲线岁迭代次数n的变化而逐渐收敛于10-1,且随N的增加而越趋明显。
从图4(c)中可以得到实际权矢量与误差权矢量的关系:误差权矢量与实际权矢量有较大的误差,而误差权矢量总是围绕在实际权矢量上下波动。随N的增加而使得其相互之间的误差越小。
最小均方误差(LMS)算法是最简单、应用最广泛的自适应算法之一。LMS算法通过自适应调节w(n),使得残余回波或平方误差的期望值达到最小。事实上,LMS算法是依据最陡梯度法来更新滤波器系数w(n)的,用算术矢量形式表示为:
w(n+1)=w(n)+ [- ] (2.3.1)
由于- 很难实际计算出来,因此在LMS算法中。平方误差的期望值被瞬间值所取代,即:
= =-2e(n)x(n)(2.3.2)
将式(2.3.1)与式(2.3.2)结合在一起,于是LMS算法可表达如下:
(n+1)= (n)+ e(n)x(n) (2.3.3)
为确保收敛,收敛因子应满足0<<2/λmax(λmax是E(x(n)?xT(n))的最大特征值)。由于LMS算法易于实现,同时,算法对有限寄存器长度造成的实现误差不敏感,因此LMS算法对于实际应用来说具有相当的吸引力。然而LMS算法的收敛速率依赖于E(x(n)?xT(n))特征值的发散程度。在实际应用中,输入信号往往是语音,而语音的特征值分布相对分散,因此LMS的收敛速度较慢,于是又出现了很多改进算法,比如滑动窗LMS算法,时域去相关LMS算法(DLMS), NLMS算法,符号误差算法等等。这些算法比基本的LMS算法在精度和收敛速度上有明显的改进,计算量和基本LMS 算法相当。由于NLMS算法相对简单,容易实现,因此应用更广泛。
三归一化LMS算法
1 归一化LMS算法原理与性能分析
若不希望用与估计输入信号矢量有关的相关矩阵来加快LMS算法的收敛速度,那么可用变步长方法来缩短其自适应收敛过程,其中一个主要的方法是归一化LMS算法(NLMS算法),变步长的更新公式可写成
W(n+1)=w(n)+ e(n)x(n)
=w(n)+ (3.1)
式中,= e(n)x(n)表示滤波权矢量迭代更新的调整量。为了达到快速收敛的目的,必须合适的选择变步长的值,一个可能策略是尽可能多地减少瞬时平方误差,即用瞬时平方误差作为均方误差的MSE简单估计,这也是LMS算法的基本思想。瞬时平方误差可以写成
e2(n)=[d(n)-xT(n)w(n)]2
=d2(n)+wT(n)x(n)xT(n)w(n)-2d(n)w T(n)x(n)(3.2)
如果滤波权矢量的变化量w′(n)=w(n)+ ,则对应的平方误差可以由上式得到
= e2(n)+2 x(n)xT(n)w(n)
+ x(n)xT(n)-2d(n)x(n)(3.3)
在此情况下,瞬时平方误差的变化量定义为
= - e2(n)
=-2 x(n)e(n)+ x(n)xT(n)(3.4)
把= e(n)x(n)的关系式代入式(4)中,得到
=-2 e2(n)xT(n)x(n)+ e2(n)[xT(n)x(n)]2 (3.5)
为了增加收敛速度,合适地选取使平方误差最小化,故将式(3.5)对变系数求偏导数,并令其等于零,求得
= (3.6)
这个步长值导致出现负的值,这对应于德最小点,相当于平方误差等于零。为了控制失调量,考虑到基于瞬时平方误差的导数不等于均方误差MSE求导数值,所以对LMS算法的更新公式作如下修正:
w(n+1)=w(n)+ e(n)x(n) (3.7)
式中,为控制失调的固定因子,参数是为避免xT (n)x(n)过小导致步长值太大而设置的。通常称式(3.7)为归一化算法的迭代公式。
为了保证自适应滤波器的工作稳定,固定收敛因子的选取应满足一定的数值范围。首先考虑到下列关系:
E[xT(n)x(n)]=tr[R] (3.8-a)
E[ ] (3.8-b)
然后对收敛因子的平均值应用更新LMS的方向e(n)x(n)是,最后,将归一化LMS算法的更新公式与经典LMS算法的更新公式相比较,可以得到收敛因子的上下界不等式条件,如下:
0<= <(3.9)
或0<<2
显然,由式(3.7),(3.9)可构成归一化LMS算法,其中0≤ ≤1,选择不同的值可以得到不同的算法,当=0时,由式(3.7)可以写成
W(n+1)=w(n)+ (d(n)-w T(n)x(n))x(n) (3.10)
这种算法是NLMS算法的泛化形式,其中随机梯度估计是除以输入信号矢量元素平方之和。所以步长变化的范围比较大。可由较好的收敛性能。在此情况下,算法的归一化均方误差(NMSE)可由式(3.10)得到
= (3.11)
最佳滤波权矢量可由对w(n)求偏导数,并令其等于零,即由式
=0
得到最佳滤波权系数
= (3.12)
式中,(3.13-a)
= (3.13-b)
所以,自相关矩阵和互相关量都含有归一化因子,在稳定状态x(n)和d(n)时,假定自相关矩阵存在可逆性。同时,我们
由式(3.11)可以看出,当且仅当d(n)=xT(n) 时,归一化LMS算法的均方误差可等于零。这需要对d(n)用输入信号矢量线性组合进行精确的建模。此时,最佳滤波权矢量变成适宜的线性系数矢量。
当=1时,NLMS算法更新公式可以写为:
w(n+1)=w(n)+ e(n)x(n) (3.14)
由此可得到NLMS算法的特殊形式:
w(n+1)=w(n)+ [d(n)-wT(n)x(n)]x(n) (3.15)
或w(n+1)=w(n)+[d(n)- wT(n)x(n)] (3.16)
这也表明等效步长是输入信号的非线性变量。它使变步长由大逐步变小,加速了收敛过程。当然,NLMS算法的计算量也较LMS算法有些增加。
2 仿真结果分析
(a)(b) (c)
图5 NLMS算法仿真
从图5(a)中可以得到实际信号的输出在坐标0的范围波动,而系统的输出大部分在(0.5,-0.5)之间。少部分在它之外波动。随N的增加而波动范围变小。
从图5(b)中可以得到随步长参数的减少,NLMS算法的收敛速率相应减少。同时也影响学习曲线的变化。误差曲线岁迭代次数n的变化而逐渐收敛于10-1,且随N的增加而越趋明显。较LMS的学习曲线具有更小的变化,故较LMS算法有更优的性能。
从图5(c)中可以得到实际权矢量与误差权矢量的关系:误差权矢量与实际权矢量有较大的误差,而误差权矢量总是围绕在实际权矢量上下波动。随N的增加而使得其相互之间的误差越小。较LMS的误差具有更小的变化。
NLMS算法中,w(n)的变化由e(n)x(n)确定。由于e(n)x(n)正比于输入信号x(n),因此梯度的估计误差会随着x(n)幅度的增加而增加。为避免这一问题,可以将收敛因子相对于x(n)的短时平均能量|x(n)|2进行归一化,由此便得到归一化的最小均方误差(NLMS)算法:
w(n+1)=w(n)+ e(n)x(n) (3.17)
式中,为确保收敛,应满足0<<2。与LMS不同,NLMS的收敛条件与输入信号的特征值无关,同时,当输入信号为语音时,NLMS算法比LMS算法的收敛速率快,而且鲁棒性更好。另外,在计算量方面,NLMS算法的计算量与LMS 相当。因此,NLMS算法比LMS算法应用更广泛。
四可变步长LMS自适应滤波算法
1 可变步长LMS算法原理
收敛速度、时变系统的跟踪能力及稳态失调是衡量自适应滤波算法优劣的三个最主要的技术指标。由于LMS算法的加权矢量w(n)具有随机性,使得LMS算法在E[w(n)]收敛到最佳值w0后,加权矢量w(n)继续按公式
w(n+1)=w(n)+ μe(n)x(n) (4.1)
变化,其修正量μe(n)x(n)不为零而是继续随机起伏,从而使得LMS算法的E[w(n)]收敛到w0后,均方误差ξ将大于维纳误差ξmin。同时,由于输入端不可避免地存在干扰噪声,LMS算法将产生参数失调噪声。干扰噪声vn越大,所引起的失调噪声就越大。步长因子μ值对E[wi(n)]的收敛过程有着很大的影响,值必须满足收敛条件。此外,在收敛范围内,μ值越大,E[wi(n)]收敛越快。但μ过大时,过度过程将出现振荡,MSE也会变大;减小μ值可以减小自适应滤波算法的稳态失调噪声,提高算法的精确度。然而,步长因子μ的减小将降低算法的收敛速度和跟踪速度。因此,固定步长的自适应滤波算法在收敛速度、时变系统跟踪速度与收敛精度方面对步长因子μ的要求是相互矛盾的。
变步长NLMS算法在很大程度上减少了基本LMS算法在收敛过程中对梯度噪声的放大作用。在训练均衡器抽头系数时,如果在算法简单的同时要求获得较佳的MSE和较快的收敛速度,NLMS将是一种比较好的选择。为了进一步提高性能,这种变步长的更新算法改进了NLMS算法,计算量增加很少,但是能显著地提高收敛速度,并且收敛后能达到更小且稳定的MSE。这种算法的步长因子更新公式如下:
= = (4.2)
其中,ρ>0为修正系数,其作用相当于NLMS算法中的μ的作用,
= (4.3)
为误差系数,它通过λ(i)对过去M个误差e(n), e(n-1),… , e(n-M+1)作非线性加权得到,越是过去的误差信息对当前误差系数的影响越小,的影响越小,故在次定义为遗忘因子。代表对前M次误差统计加权后期望值的偏离度。变小时就跟着变小,以便趋近并缓慢跟踪最优值;反之,就增大,从而快速趋近于最优值。尽管与时间n有关,但增加的复杂度却和n无关。
2 算法性能分析
4.2.1复杂度分析
该算法是基于NLMS算法的,每次迭代时都需要计算r(n)
r(n)= =x(n)2+ x(n-1)2+…+ x(n-M+1)2 (4.4)
计算量跟抽头数M成正比,在实际实现时,可以充分利用前一次计算值r(n-1)来求取r(n),即r(n)= r(n-1)+ (4.5)
在计算时,由于e(n-1),… , e(n-M+1)均以知,故不用再次计算,=exp(-i)皆为常量,可在初始化时就预先算好。因此,跟NLMS算法相比较,新算法在每次迭代时仅增加11次乘法,10次加法,一次除法和一次绝对值计算,算法复杂度增加很少且和抽头系数无M关。
4.2.2算法的收敛性分析
LMS算法的收敛条件是0< <2/ ,故必须有:
0< = <2/ (4.6)
因为ρ>0,所以(6)式等价于下式:
= <2/ (4.7)
即ρ>max{0, [ -r(n)]} (4.8)
只要满足(4.8)式,任意ρ都能使得算法收敛。初始收敛阶段|e(n)|比较大,相应的也比较大,算法收敛速度则较快。当算法进入稳态时,|e(n)|打到最小,此时,也打到最小,由此可得到最佳维纳解。
修正系数ρ较小时,初始收敛速度较慢,但是稳态时可以收敛到较小的MSE;修正系数ρ比较大时,初始收敛速度比较快,但是稳态时的MSE也比较大。所以,ρ的选择在不同情况下,尽可能使算法在开始阶段步长因子比较大,同时算法在收敛到稳态时有比较小的MSE,也可以根据实际性能要求对ρ作适当的选择。
4.2.3算法的失调分析
widrow引入失调系数δ= 来描述LMS算法的稳态均方误差对wiener误差的相对偏差。令
e(n)=d(n)-xT(n)w(n)
=[d(n)- xT(n)w0]- xT(n)[w(n)- w0]=e0(n)- xT(n)v(n) (4.9)
其中v(n)= w(n)- w0 (4.10)
则v(n+1)= w(n) - w0=w(n) - w0+μ(n)e(n)x(n)
=[I-μ(n)x(n)xT(n)]v(n)+ μ(n)e0(n)x(n) (4.11)
为求v(n)方差的渐进值,可以用下式来近似(4.11):
v(n+1)=[I-μ(n)Rxx] v(n)+ μ(n)e0(n)x(n) (4.12)
又由
E{[Q-1v(n)] [Q-1v(n)]T}= (4.13)
得(4.14)
从而新算法的失调系数可表示为
δ= (4.15)
显然,在滤波器阶数和信号输入功率一定的情况下,算法进入稳定状态后,随着步长因子趋于极小,新算法的失调系数也趋于极小,比基本LMS算法要小得多。
通过引入遗忘因子对当前和过去的M次误差e(n)进行非线性加权,新算法的步长因子能够“智能”跟踪MSE的变化,并在算法达到稳定后收敛到比前面提及的其它LMS算法更小的极小值。因此,新算法能够在保持NLMS算法优点的同时,进一步加快收敛速度,并且能够达到更小且稳定的MSE。
五变换域LMS自适应算法
影响LMS自适应算法收敛速度的主要因素是输入自相关矩阵Rxx的最大特征值与最小特征值之比/ ,而R xx最大特征值与最小特征值之比又受限于输入功率最大值与最小值之比。因此,提高其收敛速度的方法是设法白化输入信号的功率,而变换域LMS自适应滤波器正是基于此提出的。
1基本原理
下图为变换域LMS自适应滤波器的原理图。N维输入矢量x(n)=[x(n) x(n-1),…, x(n-N+1)]T先经N×N正交归一化变换矩阵T,变成另一个N维矢量z(n)=[z0(n),z1(n),…,zN-1(n)]T,即
Z(n)=Tx(n)(5.1)
其中TTT=I (5.2)
图6 变换域LMS自适应滤波器的原理图
设变换权矢量b(n)为b(n)=[b0(n),b1(n),…,bN-1(n)]T (5.3)
z(n)经b(n)加权后形成的自适应输出为
y(n)= b(n)zT(n)=b T(n)z(n) (5.4)
若d(n)为期望响应信号,输出误差
e(n)=d(n)-y(n)=d(n)-b T(n)z(n)(5.5)
变换域LMS自适应算法为
bi(n+1)= bi(n)+2 e(n)zi(n),i=0,1,…,N-1 (5.6)
其中收敛因子
= (5.7)
式(5.6)可表示为如下矢量形式:
b(n+1)=b(n)+2 e(n)z(n)(5.8)
式中=diag[E[ (n)],E[ (n)] ,…,[E (n)]] (5.9)
在实际应用中,变换域自适应滤波器常用的正交变换为离散傅氏变换与离散余弦变换。
2 与普通LMS自适应滤波器之间的关系
采用与研究普通LMS算法自适应滤波器相类似的方法,可变得变换域LMS自适应滤波器的权矢量维纳解b opt与相应的最小均方误差emin(n)分别是
bopt= (5.10)
与emin(n)=E[d2(n)]- bopt (5.11)
式中=E[z(n)zT(n)]=T TT (5.12)
= E[z(n)d(n)]=T (5.13)
将式(5.12)(5.13)代入式(5.10)(5.11),有
bopt= (T TT)-1 T =T =T bopt (5.14)
与emin(n)=E[d2(n)]- TTTw opt= E[d2(n)]- wopt= emin(n)(5.15)
式中,wopt= 与emin(n)分别为普通LMS自适应滤波器的权矢量维纳解与相应的最下均方误差。式5.(14)(5.15)表明:
(1).变换域LMS算法中权矢量维纳解与普通LMS算法中权维纳解之间的关系与所采用的正交变换有关。
(2).不论采用何种正交变换,只要加权数目相同,变换域LMS算法的最小均方误差与普通LMS算法的最小均方误差总是相同的。
3变换域LMS算法的收敛性能
为了便于研究此问题,想给出矩阵理论中如下结果:
令tr(A)与det(A)分别表示N阶方阵A的迹与行列式值,则其最大与最小特征值,有如下关系:
≤tr(A)(5.16)
≥det(A),N>2 (5.17)
这样
= (5.18)
可以作为矩阵A特征值散布/ 的上限。
利用上述矩阵理论中的结果,研究变换域自适应滤波器的收敛性能。显然,其权矢量b(n)的收敛性取决于矩阵()特征值的散布,不失一般性,可以假定
E[x2(n)]=1 (5.19)
于是det()=det()det(Rxx)(5.20)
tr(Rxx)=N (5.21)
因此()=det()(Rxx)(5.22)
由于tr()=N,det()总可以保证小于或等于1。所以
()≤ (R xx)(5.23)
由上可见,适当选择正交变换矩阵T,可以使得()≤ (R xx),从而使变换域LMS自适应算法具有比普通LMS自适应算法好的收敛性能。
六最小二乘自适应滤波器
前面所研究的自适应滤波算法根据的最佳准则为最小均方误差准则。自适应算法的目标在于,使滤波器输出与需要信号的误差的平方的统计平均值最小。这个准则根据输入数据的长期统计特性寻求最佳滤波。然而,我们通常已知的仅是一组数据,因而只能对长期统计特性进行估计或近似。LMS算法、格形梯度算法都是这样。而最小二乘算法就是能直接根据一组数据寻求最佳解。换句话说,根据最小均方误差准则得到的是对一类数据的最佳滤波器,而根据最小二乘法得到的是对一组已知数据的最佳滤波器。对同一类数据来说,最小均方误差准则对不同的数据组导出同样的“最佳”滤波器;而最小二乘法对不同的数据组导出不同的“最佳”滤波器。因而常说最小二乘法导出的最佳滤波器是“精确”的。
1 递推最小二乘(RLS)算法
递推最小二乘(R LS)算法是一种在自适应迭代的每一步都要求最优的迭代算法,其目标函数为
J(n)= e2(l)= [d(l)-y(l)]2 (6.1)
式中,d(l)与y(l)分别为自适应滤波器的期望相应于输出信号。e(l)为误差信号,为一不大于1的正常数,为指数加权因子。其目的在于确保滤波器能够忘记“过去的”的数据以确保算法适用于菲平稳的环境,n为可变的数据长度。
=1时,普通最小二乘法的递推公式为:
J(n)= [d(l)-y(l)]2= [d(l)-wT(l)x(l)]2 (6.2)
对于≠1时的指数加权最小二乘法,直接给出其递推公式。对上式求导数并令其等于零,可得到
R(n)w(n)=g(n) (6.3)
式中R(n)与g(n)分别为自相关矩阵和互相关矢量在时刻n的估计值。R(n)与g(n)的元素分别由下式求得:
ri,j(n)= x(l-i)x(l-j) (6.4)
gi(n)= d(l)x(l-j) (6.5)
R(n)与g(n)可以分别采用如下的递推公式计算,即
R(n)= R(n-1)+x(n)xT(n) (6.6)
g(n)= g(n-1)+d(n)x(n) (6.7)
第n步迭代的最优解为:
w(n)=R-1(n)g(n) (6.8)
由于第n步的结果,可以推得第n+1步的结果:
w(n+1)= R-1(n+1)g(n+1) (6.9)
式中g(n+1)可以利用g(n)= g(n-1)+d(n)x(n)递推计算,而R-1(n+1)则借助如下的矩阵球递推公式:
(A+UUT)-1=A-1- (6.10)
来求解。式中A为一奇异方阵,U为任意矢量,可使得R-1(n+1)的递推公式为:
R-1(n+1)= R-1(n)- (6.11)
将式(7)与(11)代入式(9)中,有
w(n+1)= [R-1(n)- ][ g(n)+d(n+1)x(n+1)] (6.12)
令k= xT(n+1) R-1(n) x(n+1),则上式可简化为:
w(n+1)= w(n)- R-1(n)x(n+1)(6.13)
定义先验误差e(n+1/n)为:
e(n+1/n)=d(n+1)-w T(n)x(n+1)= d(n+1)- xT(n+1) w(n) (6.14)
则RLS算法递推公式为:
w(n+1)=w(n)+ e(n+1/n) R-1(n) x(n+1) (6.15)
令P(n)= R-1(n),上式可改写成:
w(n+1)=w(n)+ e(n+1/n) P(n) x(n+1) (6.16)
设给定w(n)与P(n)的初始值w(0)与P(0),对于n=0,1,…,RLS自适应算法总结如下:
e(n+1/n)= d(n+1)-w T(n)x(n+1) (6.17)
(n+1)= (6.18)
w(n+1)=w(n)+ (n+1)e(n+1/n) P(n) x(n+1) (6.19)
P(n+1)= P(n)- (n+1) P(n) x(n+1) xT(n+1) P(n) (6.20)
式中,(n+1)称为RLS算法的收敛因子。
当≠1时,指数加权R LS自适应算法为:
e(n+1/n)= d(n+1)-w T(n)x(n+1) (6.21)
(n+1)= (6.22)
w(n+1)=w(n)+ (n+1)e(n+1/n) P(n) x(n+1) (6.23)
P(n+1)= P(n)- (n+1) P(n) x(n+1) xT(n+1) P(n) (6.24)
RLS算法的主要优点是收敛速度快,且对自相关矩阵特征值的分散性不敏感,其缺点是计算量比较大。
2 仿真结果分析
从图7(a)中得出学习曲线的收敛随迭代次数n的增加而有两好的性能。它的收敛大约要2M次迭代,其中M是滤波器长度。这意味着RLS算法的收敛速率比LMS算法快一个数量级。
从图7(b)中得出随着迭代次数n的增加测量误差逐步趋近于方差。也就是说,RLS算法理论上的额外均方误差为零(即零失调)。
(a)(b)
图7 RLS算法仿真
又可得出RLS算法在均方意义上的收敛性独立于输入信号x(n)集平均相关矩阵R的特征值。
由于LMS算法只是用以前各时刻的抽头参量等作该时刻数据块估计时的平方误差均方最小的准则,而未用现时刻的抽头参量等来对以往各时刻的数据块作重新估计后的累计平方误差最小的准则,所以LMS算法对非平稳信号的适应性差。递归式最小均方(R LS)算法的基本思想是力图使在每个时刻对所有已输入信号而言重估的平方误差的加权和最小,这使得RLS算法对非平稳信号的适应性要好。与LMS算法相比,RLS算法采用时间平均,因此,所得出的最优滤波器依赖于用于计算平均值的样本数,而LMS(NLMS)算法是基于集平均而设计的,因此稳定环境下LMS(NLMS)算法在不同计算条件下的结果是一致的。在性能方面,RLS的收敛与E(x(n)?xT(n))的特征值无关,同时R LS的收敛速率比LMS(NLMS)要快得多,因此,RLS在收敛速率方面有很大优势。然而,鲁棒性或有限精度问题却给RLS算法的有效性带来很大的问题:一方面,横向RLS算法往往不稳定,鲁棒性很差,另一方面,格状R LS算法计算量很大,基本是LMS算法的计算量的平方。以上缺点,使RLS算法并不适合语音通信中的回波抵消。
RLS算法中的步长参数被输入向量的相关矩阵的逆代替,它对抽头输入有白化作用。这一改进对平稳环境下R LS算法的收敛性能有如下深刻影响:
1).LS算法的收敛速率比LMS算法快一个数量级。
2).R LS速率不随输入向量x(n)的集平均相关矩阵R特征值的扩散度(即条件度)而改变。
3).随着迭代次数n趋于无限,R LS算法的额外均方误差收敛于零。
3 RLS与LMS算法的比较
在这里分别比较RLS与LMS的收敛速度,MSE及其对于抽头系数的敏感度。确定的范围。设定参数:值:范围:
LMS算法迭代公式:(n+1)= (n)+ e(n)x(n)
表1 抽头对应μopt之MSE
LMS (L=1.2e4)
Tap nu mber μ Square error
(续上表)
400 7.4000e-001 2.0818e-002
600 1.1500e+000 1.6579e-002
800 1.2800e+000 1.3508e-002
1000 1.4050e+000 5.0833e-002
1200 1.4240e+000 4.7002e-002
1600 1.2900e+000 1.1123e-001
2000 1.3100e+000 1.4032e-001
图8 LMS收敛曲线(L=1.2e4) 图9 LMS收敛曲线(log)(L=1.2e4)
表2 抽头对应μopt之MSE
2. LMS(L=8e5)
Tap nu mber μ Square error
400 1.0652e-005 4.0988e-003
600 1.1353e-005 2.7901e-003
800 1.4389e-005 1.3377e-003
1000 1.9467e-005 1.3792e-003
1200 1.2364e-005 8.6780e-004
1600 1.2380e-005 3.9803e-004
2000 1.8858e-005 7.2805e-005
图10 LMS收敛曲线(L=1.2e4) 图11 LMS收敛曲线(log)(L=1.2e4)
RLS算法:
表3 抽头对应μ之MSE
RLS(L=1.2e4)
Tap nu mber μ Square error
400 1e-5 7.6688e-003
1.0652e-005 7.6705e-003
600 1e-5 8.0513e-004
1.1353e-005 8.0516e-004
800 1e-5 4.8614e-004
1.4389e-005 4.8896e-004
1000 1e-5 1.7007e-004
1.9467e-005 1.7280e-004
1200 1e-5 1.9040e-004
(续上表)
1.2e-5 1.9099e-004
1.2364e-005 1.9109e-004
1600 1.5e-5 6.6376e-005
1.2380e-005 6.6190e-005
图12 R LS收敛曲线(L=1.2e4)
图13 R LS收敛曲线(log)(L=1.2e4)
图14 LMS、RLS收敛曲线比较(L=1.2e4)
图15 LMS、RLS收敛曲线比较(log)(L=1.2e4)
表4 LMS与RLS比较
L Tap μ Square error
(续上表)
L.M.S 1.2e4 1600 1.2900e+000 1.1123e-001
R.L.S 1.2e4 1600 1.2380e-005 6.6190e-005
图16 LMS(L=8e5)、RLS(L=1.2e4)收敛曲线比较
图17 LMS(L=8e5)、RLS(L=1.2e4)收敛曲线比较(以L=1.2e4做比较)
说明:由表1知道在L=1.2e4的情況下,因为所送的迭代量不够长,虽然增加抽头可有效的降低MSE但得到的改善有限,因此需使用较大的μ有效的追上通道的变化量,但由于μ较大,因此会得到MSE相当的大。
由图14、15分別是针对LMS与RLS作比较,由(图七)可以明显看出R LS收敛的速度,比LMS来的快,且由图14RLS 使用较快收敛迭代次数便能有效的降低MSE在10e-4左右,而LMS的MSE在10 e -1左右起伏。
图18 LMS(L=8e5)、RLS(L=1.2e4)收敛曲线比较(log)(以L=1.2e4做比较)
表5 LMS与RLS比较(fixed tap、μ)
L Tap μ Square error
L.M.S 8e5 1600 1.2380e-005 3.9803e-004
R.L.S 1.2e4 1600 1.2380e-005 6.6190e-005
表6 LMS与RLS比较
L Tap μ Square error
L.M.S 8e5 1600 1.2380e-005 3.9803e-004
R.L.S 1.2e4 800 1e-5 4.8614e-004
说明:表2为为了达到MSE 1e-4的条件下,L=8e5模拟最佳的抽头系数与μ值,使其LMS与R LS能达到相近的MSE。
由表3可以看出在μ固定下的模拟,只要抽头增加便能得到MSE有效的下降。由表5是在抽头与μ在相同的情況下的比较,LMS需要输入的迭代量长度为8e5下其MSE才达到最佳的值(LMS模拟为调整抽头、μ后的最小MSE值),而RLS使用与LMS相同的抽头、μ的情況下只需要在输入的长度为1.2e4便能达到比LMS小的MSE。由表6可以看出RLS 要达到与LMS相近的所需要的L、抽头与μ都小于LMS所使用的参数值。
结论:由,
知道RLS算法的λ值越接近1越好,从上式可以看出δ值可以从λ或α值来控制,因为是固定的。知道有效的α值可以控制我们的初始值。
1. 当SNR高、noise低的时候,RLS会有很快的收敛速度,需要的条件:
2. 当SNR中等(The inpu t SNR is on the of 10dB),RLS的收敛速度比高SNR时要来得慢。
需要的条件:
3. 当SNR低、noise高的时候,收敛速度最慢,且其performance最差。所需要的条件:
影响LMS的收敛因素主要为μ与correlation matrix R。RLS为least square的延伸,主要根据matrix inversion来完成演算法。R LS有较好的效能,收敛速度很快,与tap 有关L大约在两倍的tap number即可收敛完成。且利用通道correlation matrix会随时间而改变,所以更适应时变通道,这种改变会将W eight参数估计的更准确,相对的R LS需要大量使用矩阵运算,它的复杂度很高,与tap number的平方成正比。
表7 LMS与RLS性能比较
L.M.S. R.L.S.
优点 1.复杂度低
2.收敛好(error低) 1.收敛速度快
2.较少L、tap数就能收敛
缺点 1.收敛速度慢
2.较大L、tap数才能收敛 1.复杂度高
2.收敛较差(error高)
七格型自适应滤波器
格型结构的自适应滤波器有横向滤波器所不具有的许多优点,如自适应收敛快,滤波器节数的改变容易,对权系数有限字长效应灵敏度低等。因此,它得到广泛的注意和关注。
设x(n)为零均值平稳随机过程,可以利用x(n-1),x(n-2),…, x(n-p)的加来预测x(n),即
= aix(n-i) (7.1)
式中,ai(i=1,2,…,p)称为p阶预测器的预测系数,预测误差也可表示为
e(n)=x(n)— (7.2)
或ef(n)=x(n)—a1 x(n-1)—… —ap x(n-p) (7.3)
其中将e(n)改写成ef(n)是因为这种预测方法称为前向预测,它与下面要讨论的后向预测相对应a=(1,-a1,…,- ap) (7.4)
为p阶预测误差滤波器。选择适当的ai,i=1,2,…,p,使均方误差E[(ef(n))2]达到最小,可以得到预测误差与输入信号正交的结果,即
E[ef(n) x(n-j)]=0, j=1,2,…,p (7.5)
与(1)相对应,定义后向预测器为
= bi x(n-p+i) (7.6)
后向预测误差为eb(n)=x(n-p-)-
= x(n-p)-b1 x(n-p+1) -…-bp x(n) (7.7)
同样,称b=(1,-b1,…,- b p) (7.8)
为后向预测误差滤波器。与前向预测器相类似,也可以得到
E[eb(n) x(n-p+j)]=0, j=1,2,…,p (7.9)
即后向预测误差为与输入信号正交。将ef(n)与eb(n)的表示式(7.3)和(7.7)代入它们各自的正交表示式(7.5)或(7.9),有
= (7.10)
= (7.11)
显然,上面二式是相同的,因此有[a1, a2,…, ap]T= [b1, b2,…,bp]T 。这表明上述是在前向预测器和后向预测器向预测器相同时研究的。
对已给定的p阶前向预测器,欲求其p+1阶前向预测误差,可以采用对式(7.10)所示正则方程进行扩展的方法。对此可设法寻找一组系数,应满足如下正则条件;
E[efp+1 (n) x(n-j)]=0, j=1,2,…,p +1 (7.12)
现设efp+1 (n)= efp (n)- efp (n-1) (7.13)
式中,为一常数,称为反射系数。由于efp(n)与efp(n-1)均与x(n-1),x(n-2),…,x(n-p)数组正交,故由式(7.13)有
E[efp+1 (n) x(n-j)]=
E[efp (n) x(n-j)]- E[efp (n-1) x(n-j)],j=1,2,…,p (7.14)
即式(7.13)满足式(7.12)中j=1,2,…,p的正交条件。此外,它还应满足j=p+1的正交条件,即
E[efp+1 (n) x(n-p-1)]=0 (7.15a)
将(7.13)代入式(7.15a),有
c- c=0 (7.15b)
由此可以解出
= (7.16)
由式(7.7)和(7.9)关系,上式还可以表示为
= (7.17)
这样,由式(7.13)可以得到p+1阶前向预测误差。同理后向预测误差也可以扩展到p+1阶:
ebp+1 (n)= ebp(n-1)- efp (n) (7.18)
式中= (7.19)
设定预测误差的初始值ef0 (n)与eb0 (n)均设定为x(n),即
ef0 (n)= eb0 (n)= x(n)(7.20)
对于i=0,1,…,p有
= (7.21)
efi+1 (n)= efi(n-1)- ebi (n-1) (7.22)
= (7.23)
efi+1 (n)= ebi(n-1)- efi (n) (7.24)
x(n)= ef0 (n) ef1 (n) efp (n)
- -
- -
eb0 (n) ebp (n)
图19 p阶格型预测误差滤波器的结构图
当前所用前向与后向预测误差滤波器相同时,= = ,从而E[(efi (n) )2]= E[(ebi (n-1) )2],式(7.21)~(7.24)可以简化如下:
= =
= (7.25)
efi+1 (n)= efi (n)- ebi (n-1) (7.26)
ebi+1 (n)= ebi (n-1)- efi (n) (7.27)
式(7.25)表明:= 时采用前向或后向均方预测误差为最小,它们同时为最小及它们之和的平均为最小,其结果是一致的。下面还需要研究格型滤波系数的自适应算法,取其目标函数为前向和后向均方预测误差之和的平均,即
Ji(n)= ,i=1,2,…,p (7.28)
的自适应算法为
(n+1)= (n)- ,i=1,2,…,p (7.29)
其中(n)为格型滤波器系数在自适应过程中时刻n的值,为自适应常数。如在LMS算法中一样,用性能函数的瞬时值来代替均方值,有
(n)= (7.30)
因此,有
(n)= = [ efi (n) ] (7.31)
由式(7.26)和(7.27),得时变反射系数的递归公式如下;
efi (n)= efi-1 (n)- (n)ebi-1 (n-1) (7.32)
ebi (n)= ebi-1 (n-1)- (n)efi-1 (n) (7.33)
这样
=- ebi-1 (n-1) (7.34)
=- efi-1 (n) (7.35)
将式(7.34)(7.35)代入式(7.31),有
(n)=[- efi (n) ebi-1 (n-1)- ebi (n) efi-1 (n)] (7.36)
于是,式(7.29)变为
(n+1)= (n)+ [ efi (n) ebi-1 (n-1)+ ebi (n) efi-1 (n)] (7.37)
上式与式(7.26)和式(7.27)共同构成了基于最小均方最优准则的格型自适应滤波器的基本算法。
八递归型(IIR型)自适应滤波器
横向与格型自适应滤波器均是非递归的,此外,还有递归型的自适应滤波器,它在性能上有一些优点,但存在稳定性与算法收敛性问题。
递归型自适应滤波器的输入x(n)与输出y(n)的关系为
Y(n)= (8.1)
式中,ai(n)与bi(n)为滤波器ai与bi在n时刻的值。若d(n)为期望相应于n时刻的值,则n时刻的输出误差为E(n)=d(n)-y(n)
=d(n)- (8.2)
递归自适应滤波器通常也用LMS算法,但比非递归型自适应滤波器时要复杂。因为在非递归型时,bi(n)=0,i=1,2,…, N,若用e2(n)近似表示E[e2(n)],则作为ai(n)(i=0,1,…,N)的函数e2(n)是二次曲面,由唯一的最小点。这样,调整系数ai(n)的自适应算法可由最速下降法得到。但在递归型自适应滤波器中,e2(n)是ai(n)与bi(n)的函数,这时,曲面e2(n)不是二次的,存在局部最下点。现假设e2(n)曲面存在全局最下点,则递归型自适应滤波器也可以使用最速下降法。其滤波器系数ai(n)与bi(n)的自适应算法如下:
ai(n+1)= ai(n)- (8.3)
与bi(n+1)= bi(n)- (8.4)
式中与为相应的收敛因子。与推演非递归型自适应滤波的LMS算法相同,用e2(n)近似E[e2(n)],则将式(8.2)代入式(8.3)和(8.4)并求其偏导数,可得
(8.5)
(8.6)
式中,与分别为y(n)对ai(n)与bi(n)的偏导数。将式(8.1)分别对ai(n)与bi(n)求偏导数,得到
(8.7)
与(8.8)
将与关系代入式(8.7)与式(8.8),得
=x(n-i)- (8.9)
与=y(n-i)- (8.10)
若式(8.9)与式(8.10)中与可近似为下列关系:
y(n-i)(8.11)
则递归型自适应滤波器的自适应算法简化为
ai(n+1)=ai(n)+2 e(n)x(n-i)(8.12)
与bi(n+1)=bi(n)+2 e(n)y(n-i)(8.13)
若bi(n)=0,i=1,2,…,N.显然,有
ai(n+1)=ai(n)+2 e(n)x(n-i) (8.14)
这是非递归型自适应滤波器的LMS算法。因此,非递归型自适应滤波器的LMS算法可以视为递归型自适应滤波器LMS 算法于bi(n)=0(i=1,2,…,N)的一个特殊情况。
上述递归型自适应滤波器LMS算法是在假设e2(n)曲面存在全局最下点导出的,实际上,这种算法搜索到全局最小点是恨困难的,因而存在自适应算法收敛性问题。
递归型自适应滤波器比非递归型自适应滤波器更有一般性,滤波器阶数低且计算量少,但存在稳定性与算法收敛性问题。因此,对它的研究一直非常活跃。为了克服其缺点,已研究出一些算法,如超稳定的自适应滤波算法与基于梯度的递归预测误差算法等。
九盲自适应均衡
盲自适应均衡是一种本身自适应的均衡器。它不再需要参考输入的训练序列来维持正常工作何防止失锁现象发生。因此,再数据通信系统中不要发送训练序列,可以提高信道效率。同时盲均衡技术还可以获得更好的均衡性能。从而引起人们注意研究盲均衡方法。早期的盲均衡方法有Sato盲均衡算法(SA)和Godard盲均衡算法(GA)。后者性能优于前者,可以有效地应用于平衡信号传输的正交幅度调制(QAM)系统。近代数字通信系统广泛采用多相移键控(MPSK)调制方式,这种调制方法需要用到盲均衡技术。盲均衡方法有高阶矩盲均衡算法,分数间隔盲均衡算法,周期平衡盲均衡算法,自适应频域最小差错概率均衡算法,以及神经网络盲均衡方法。
1 Godard盲自适应均衡算法
如图20所示为不需要参考输入训练序列的盲本身自适应均衡系统的原理框图。PAM通信系统信道he(n)的输出信号x(n)可表示为
x(n)= +v(n) (9.1.1)
图20 盲自适应均衡系统
式中,v(n)是加性信道噪声;s(n)是输入端发送的基带码元序列,它是独立相同分布(i,i,d)序列。
均衡器是线性自适应滤波器型系统he(n),它的输出y(n)可以写成:
y(n)= (9.1.2)
如果略去信道噪声的影响,则信道输入端导均衡器输出端的冲激响应h (n)等于信道冲击响应hc(n)与均衡器冲激响应he(n)的卷积,即
h (n)= hc(n)* he(n)= (9.1.3)
均衡器输出y(n)可以把式(9.1.1)带入式(9.1.2)或直接由式(9.1.3)写成
y(n)= (9.1.4)
通过算法调节均衡器参数使输出y(n)逼近于输入序列s(n)。这涉及到均衡器所用滤波系数数目(即阶数或长度)与代价函数的选用问题。统计代价函数经过均衡器参数he(n)非约束最小化就可获得其最优参数。最优解结果应满足下列条件:
{h (n)}= ; =0, 1, 2,… (9.1.5)
盲均衡的频域优化结果应是
Hc(ω)He(ω)= H (ω)= e-jndω; =0, 1, 2,… (9.1.6)
式中,Hc(ω),He(ω)分别为信道和均衡器的频率特性(转移函数),H (ω)为它们总系统频率特性函数。在此情况下,均衡器输出经过判决器后s’(n)逼近于原信号序列s(n),得到最优的均衡。
Godard自适应均衡算法实质上是一个常模量算法实质上是一个常模量算法(C MA),GA所用代价函数是
JGA(n)=1/4E[|(y(n)|2- )2] (9.1.7)
式中,
= (9.1.8)
式中,E[?]表示求数学期望。显然,GA代价函数中已无信号s(n)的瞬时信号了,即使通信信道突然恶化,也不会发生变化,从而克服了均衡器失锁和假收敛现象。因此,盲均衡算法的收敛性能大大优于LMS均衡算法。
自适应算法是由代价函数按随机梯度下降法最小化得出的,调节均衡参数得在线自适应均衡算法可写成
= - ; k=0, 1, 2,… (9.1.9)
式中,μ是自适应步长。
表示一误差函数,在盲自适应均衡算法中,它被定义为
=w(y(n))(y(n)- ) (9.1.10)
式中,w(y(n))定义为
w(y(n))= (9.1.11)
式(9.1.9)- (9.1.11)组成标准得Godard算法。
如果在式(9.1.10)中对y(n)所有值存在以下条件:
w(y(n))=1; (9.1.12)
则均衡器更新公式(9.1.9)和(9.1.10)组成判决直接均衡器(简称DDE).
2 过采样与独立分量分析得盲均衡算法
目前对于多通道系统的盲卷积、盲信道参数识别和盲均衡问题的研究也非常重视。利用过采样(Over-Sampling)技术、子空间(sub-space)及分数间隔(Fractionally-spaced)技术逼近的盲均衡方法非常适用于单输入多输出系统,并且得到了较快的发展。利用过采样技术和独立分量分析(ICA)网络做单入多出(SIMO)系统的盲均衡,得出一种新的在线盲子适应均衡方法。并且基于均衡器输出的四阶累计量,利用随机梯度下降和进化计算两方法,可以精确地估计系统参数。
图21 过采样-IC A盲均衡算法
表示过采样IC A盲均衡系统框图。设信道为稳定FIR线性时不变系统hc(n),0≤n≤N为等效基带信道(包括滤波、调制和解调等)的冲激响应,且在单位圆上没有零点。S(n)是均值为零的独立相同分布的非高斯序列(如两电平对称的PAM序列),其二、四阶累积量存在,三阶累积量为零,v(n)为零均值加性高斯噪声,与源信号s(n)相互独立。由于s(n)和h(n)均未知,仅观测信号x(n)为已知,如何由x(n)而又不用训练序列来恢复发送的源信号s(n)或辨识信道参数hc(n),这涉及到盲信道系统辨识和盲均衡算法。现在把式写成
x(n)= +v(n) (9.2.1)
盲均衡的目的就是仅通过接收的数据来恢复源信号序列s(n),即y(n)逼近s’(n)=s(n)。
过采样是以高于波特率采样单接收器受到的信号,即采样频率为奈奎斯特频率的整数倍。设对式以L倍波特率进行采样(L为正整数),则采样时间间隔△=Ts/L。Ts为原采样周期。于是,过采样后,式(9.2.1)的离散形式为
x( )= +v( ) (9.2.2)
令i=kL+l,l=0,1,…,L-1,则有
x(kTs+ )= +v(kTs+ ) (9.2.3)
为了书写简单起见,将信道冲激响应hc(n)换成h(n),新的注脚l表示第l路冲激响应hl(n),由此,式(9.2.3)可写作
xl(k)= +vl(k) (9.2.4)
式中,l=0,1,…,L-1,对所有l当k<0或k>M时,hl(k)=0,这里M为每路冲激响应的最高阶数。因此,通过过采样技术使单通道输出x(n)转换成多输出hl(k),l=0,1,…,L-1。相对应的单输入多输出的L个冲激响应hl(m)等效为Lⅹ1维SIMO系统的冲激响应矢量h(m),即
h(m)=[ h0(m) h1(m) ┅hL-1(m) ]T; m=0,1…,M (9.2.5)
根据式(9.2.4)可知,源信号s(n)式单输入,但等效信道冲激响应变成多通道hl(n),l=0,1,…,L-1组成SIMO系统,源信号与信道或等效多通道参数都是未知的,仅输出观测信号x(n)或hl(k)已知,利用盲信源分离法可以求得s(n)。独立
分量分析法就是信源分离法,通过ICA计算使其输出y(n)逼近于源信号s(n),判决器更有助于y(n)与s(n)逼近程度。
十应用
自适应滤波处理技术可以用来检测平稳和非平稳的随机信号。自适应数字系统具有很强的自学习、自跟踪能力和算法的简单易实现性,它在噪化信号的强检测增强,噪声干扰的抵消,波形编码的线性预测,通信系统的自适应均衡,图像自适应压缩编码,系统识别,以及未知系统的自适应参数辨识等方面获得广泛的应用。这里主要介绍几种当今较常用的、采用自适应滤波算法实现的技术。
1自适应均衡器
在信道均衡运用中,将发送的受信道失真影响的原始信号作为自适应滤波器的输入信号,可期望信号是原始信号的时延形式,如图22(a)所示。通常情况下,输入信号的时延形式在接收端是可以得到的,采用形式是标准的训练信号。当MSE达到最小时,就表明自适应滤波器代表了信道的逆模型(均衡器)。
图22(a)自适应均衡框图
图22(b)自适应均衡器
系统中使用两个独立的随机数发生器,一个用xn来表示,用来测试信道。另一个用v(n)来表示,用来模拟接收器中的加性白噪声的影响。序列xn是xn=±1的伯努利序列,随机变量xn具有零均值和单位方差。第二个序列v(n)具有零均值,其方差由信噪比决定。均衡器有11个抽头。信道的冲激响应定义为:
其中,W控制幅度失真的大小,因此也控制信道产生的特征值扩展。将延迟7个样值后的信道输入作为均衡器的期望响应。
其仿真结果说明如下:
从图22(b)的第一子图可以看出|e(n)|2随迭代次数n的增加他的收敛也就越快。同时第二子图的α(n)在迭代过程中收敛趋于稳定的同时,它也达到平稳状态。它的值在0.8的范围出现小的波动。
2自适应陷波器
如果信号中的噪声是单色的干扰,则消除这种干扰的方法是应用陷波器。希望陷波器的特性理想,即其缺口的肩部任意窄,可马上进入平的区域。用自适应滤波器组成的陷波器与一般固定网络的陷波器比较有下列优点:
1.能够自适应的准确跟踪干扰频率;
2.容易控制带宽;
信号为s=sin(2*π*t/20),干扰信号为n=A*cos(2*π*t/10+ф),两者频率比较接近,用自适应陷波器来滤除干扰而保留信号。仿真结果如下:
图23自适应陷波器
3自适应滤波器
在自适应信号的理想输入为有正弦信号。噪声输入也为一正弦信号。它们相互迭加,再经过LMS自适应算法,再比较它们的结果。
参考输入信号为一正弦波信号组成。如下图的分图(1)所示。自适应滤波器的输入信号也是一正弦信号的噪声信号相关的白噪声。如分图(2)所示。为了使输出误差的平方值尽可能小,需要对自适应滤波器的系数进行调整。如分图(3)所示,误差信号与实际信号相比它们之间的差别不大。当迭代次数的增加时,误差信号逐步趋于零,如分图(4)所示。
图24 自适应滤波器
经测试, 0 < < 0. 07 时算法稳定, =0. 035 时, 系统性能适中, 如图24所示。
(1) 的增大会导致时间常数S的减小, 使得加权系数E [W j ] 和性能函数N的过渡过程减少, 从而增强系统达到稳态的快速性。
(2) 增大导致快速性变好, 同时也增强了系统的不稳定性。当增大到超出收敛条件
的范围后, 系统的快速性完全被不稳定所取代。
总结与感谢
自适应滤波是信号处理的重要基础,近年来发展速度很快,在各个领域取得了广泛的应用。在实际问题中,迫切需要研究有效、实用的自适应算法。围绕这个课题,本文在大量文献的基础上,对自适应滤波的多种算法进行了分析和研究。研究内容主要包括理论、算法和通过计算机仿真得出有意义的结果。取得了一些有益的进展和收获。
当然,在自适应信号处理技术这个具有现实意义的课题上还有许多工作要做,如非线性自适应滤波理论和算法以及将自适应滤波和神经网络、人工智能、盲自适应信号处理、盲源分离、盲自适应均衡等技术结合起来的诸多课题。应待我在今后朝着个方向努力。
在这里我要感谢我的老师为我做着个课题给出了很好的帮助和指导,并且一直鼓励我在研究的过程中着重注意的几个方面。也在此感谢我们这组的所有组员,他们在我设计的过程中给出了宝贵的意见和看法。
参考文献
[1] 何振亚编著;《自适应信号处理》[M],北京: 科学出版社.2002.
[2] 沈福民编著;《自适应信号处理》[M],西安: 西安电子科技大学出版社.2001.
[3] 边肇祺、张学工等编著;《模式识别》(第二版)[M],北京:清华大学出版社,2000.
[4] 罗军辉等编著;《Matlab 7.0在数字信号处理中的应用》[M],北京:机械工业出版社,2005.
[5] 王宏禹、邱天爽编著;《自适应噪声抵消与时间延迟估计》[M],大连:大连理工大学出版社,1999.
[6] 龚耀寰编著;《自适应滤波》[M],北京:电子工业出版社,1999.
[7] 王敏强、郑宝玉编著;《一种新的变步长LMS自适应滤波算法》[J],:信号处理,2004.12.
[8] Simon Haykin编著,郑宝玉等译;《自适应滤波原理(第四版)》[M],北京:电子工业出版社,2003.
[9] Paulo S.R.Diniz编著,刘郁林、景晓军等译;《自适应滤波算法与实现》[M],北京:电子工业出版社,2004.
[10] 王宏禹编著;《数字信号处理导论》[M],北京:国防工业出版社,1995.
[11] 邹国良编著;《自适应滤波理论及应用》[M],河北:河北大学出版社,1997.
[12] Shun-ichi AMAR I编著,吴国正、唐劲松等译;《自适应滤波》[M],北京:电子工业出版社,2005.
附录1:matlab程序代码
本论文的程序均用matlab编写。因为本论文主要是做自适应信号处理技术的理论研究(包括性能的分析与比较、各自的优缺点等)与基本算法的仿真实现,包括对基本算法的简单应用的仿真,这里只做出了用LMS算法、NLMS算法和RLS 算法的仿真和当今应用较广的自适应均衡器、自适应分离器、自适应滤波器。它们的主要代码如下:(它们的分析结果在相关的地方进行了阐述与比较)
1.LMS算法的仿真程序:
%lms 算法
clear all
close all
hold off%系统信道权数
sysorder = 5 ;%抽头数
N=1000;%总采样次数
inp = rand n(N,1);%产生高斯随机系列
n = randn(N,1);
[b,a] = butter(2,0.25);
Gz = tf(b,a,-1);%逆变换函数
h= [0.0976;0.2873;0.3360;0.2210;0.0964;];%信道特性向量
y = lsim(Gz,inp);%加入噪声
n = n * std(y)/(10*std(n));%噪声信号d = y + n;%期望输出信号
totalleng th=size(d,1);%步长
N=60 ; %60节点作为训练序列
%算法的开始
w = zeros ( sysorder , 1 ) ;%初始化
for n = sysorder : N
u = inp(n:-1:n-sysorder+1) ;% u的矩阵y(n)= w' * u;%系统输出
e(n) = d(n) - y(n) ;%误差
if n < 20
mu=0.32;
else
mu=0.15;
end
w = w + mu * u * e(n) ;%迭代方程end
%检验结果
for n = N+1 : totalleng th
u = inp(n:-1:n-sysorder+1) ;
y(n) = w' * u ;
e(n) = d(n) - y(n) ;%误差
end
hold on
plot(d)
plot(y,'r');
title('系统输出') ;
xlabel('样本')
ylabel('实际输出')
figure
semilogy((abs(e))) ;% e的绝对值坐标title('误差曲线') ;
xlabel('样本')
ylabel('误差矢量')
figure%作图
plot(h, 'k+')
hold on
plot(w, 'r*')
legend('实际权矢量','估计权矢量') title('比较实际和估计权矢量') ;
axis([0 6 0.05 0.35])
2.NLMS算法的仿真程序:
%lms 算法
clear all
close all
hold off%系统信道权数
sysorder = 5 ;%抽头数
N=1000;%总采样次数
inp = rand n(N,1);%产生高斯随机系列
n = randn(N,1);
[b,a] = butter(2,0.25);
Gz = tf(b,a,-1);%逆变换函数
h= [0.0976;0.2873;0.3360;0.2210;0.0964;];%信道特性向量
y = lsim(Gz,inp);%加入噪声
n = n * std(y)/(10*std(n));%噪声信号
d = y + n;%期望输出信号
totalleng th=size(d,1);%步长
N=60 ; %60节点作为训练序列
%算法的开始
w = zeros ( sysorder , 1 ) ;%初始化
for n = sysorder : N
u = inp(n:-1:n-sysorder+1) ;% u的矩阵
y(n)= w' * u;%系统输出
r(n)=u'*u;%自相关矩阵
e(n) = d(n) - y(n) ;%误差
fai=.0001;%修正参数,为防止u'*u过小导致步长值太大而设置的if n < 20
mu=0.32;
else
mu=0.15;
end
w = w + mu * u * e(n)/(r(n)+fai) ;;%迭代方程
end
%检验结果
for n = N+1 : totalleng th
u = inp(n:-1:n-sysorder+1) ;
y(n) = w' * u ;
e(n) = d(n) - y(n) ;%误差
end
hold on
plot(d)
plot(y,'r');
title('系统输出') ;
xlabel('样本')
ylabel('实际输出')
figure
semilogy((abs(e))) ;% e的绝对值坐标
title('误差曲线') ;
xlabel('样本')
ylabel('误差矢量')
figure%作图
plot(h, 'k+')
hold on
plot(w, 'r*')
legend('实际权矢量','估计权矢量')
title('比较实际和估计权矢量') ;
axis([0 6 0.05 0.35])
3.RLS算法的仿真程序:
% RLS算法
rand n('seed', 0) ;
rand('seed', 0) ;
NoOfData = 8000 ; % Set no of data points used for training Order = 32 ; % 自适应滤波权数
Lambda = 0.98 ; % 遗忘因子
Delta = 0.001 ; % 相关矩阵R的初始化
x = randn(NoOfData, 1) ;%高斯随机系列
h = rand(Order, 1) ; % 系统随机抽样
d = filter(h, 1, x) ; % 期望输出
% RLS算法的初始化
P = Delta * eye ( Order, Order ) ;%相关矩阵
w = zeros ( Order, 1 ) ;%滤波系数矢量的初始化
% RLS Adaptation
for n = Order : NoOfData ;
u = x(n:-1:n-Order+1) ;%延时函数
pi_ = u' * P ;%互相关函数
k = Lambda + pi_ * u ;
K = pi_'/k;%增益矢量
e(n) = d(n) - w' * u ;%误差函数
w = w + K * e(n) ;%递归公式
PPrime = K * pi_ ;
P = ( P - PPrime ) / Lambda ;%误差相关矩阵
w_err(n) = norm(h - w) ;%真实估计误差
end ;
% 作图表示结果
figure ;
plot(20*log10(abs(e))) ;%| e |的误差曲线
title('学习曲线') ;
xlabel('迭代次数') ;
ylabel('输出误差估计') ;
figure ;
semilogy(w_err) ;%作实际估计误差图
title('矢量估计误差') ;
xlabel('迭代次数') ;
ylabel('误差权矢量') ;
4.自适应均衡器的仿真程序:
% Illustration of the conventional RLS algorithm close all;
W=2.9;
Nexp=10;
N=2000;
Nmc=1; % Number of ensemble realizations
M=11;%抽头系数
lambda=0.99;%遗忘因子
varv=0.001;%噪声方差
h=zeros(3,1);%h的初始化
er=zeros(N,Nmc);%er的初始化
h(1)=0.5*(1+cos(2*pi*(1-2)/W));
h(2)=0.5*(1+cos(2*pi*(2-2)/W));
h(3)=0.5*(1+cos(2*pi*(3-2)/W));
% 学习曲线
hc=[0 h(1) h(2) h(3)]';
n0=7;
t=(1:N)';
for i=1:Nmc
y=sign(rand(N,1)-0.5);%输入信号
v=sqrt(varv)*randn(N,1);%噪声信号
x=filter(hc,1,y)+v;%信号混合
x=[zeros(M-1,1);x];%x矩阵
yd=zeros(N+M-1,1); %延迟信号初始化
e=yd;
yd(n0+M-1:N+M-1)=y(1:N-n0+1);
% CRLS 算法
% Initialization
lambda=0.98;
P=(10^-3)*eye(M,M);
c=zeros(M,1);
g=c;
glambda=g;
% 迭代范围
for n=M:M+N-1
xn=flipud(x(n-M+1:n));
glambda=P*xn;
alphal=lambda+conj(glambda')*xn;
g=glambda/lambda;a(n)=1-conj(g')*xn;
P=(P-g*conj(glambda'))/lambda;
P=(P+P')/2;
e(n)=yd(n)-conj(c')*xn;
c=c+g*conj(e(n));
end
end
eplot=e(M:M+N-1).^2;
subplot(2,1,1), plot(t,abs(eplot))
ylabel('|e(n)|^2');
xlabel('n');
subplot(2,1,2), plot(t,a(M:M+N-1));
ylabel('\alpha(n)');
xlabel('n');
5.自适应陷波器的仿真程序:
N=400; %总采样长度
t=0:N-1; %时间的变化范围
s=sin(2*pi*t/20); %输入信号
A=0.5; %干扰信号的幅值
fai=pi/3;%干扰信号的相移
n=A*cos(2*pi*t/10+fai);%干扰信号
x=s+n;%信号混合
subplot(2,2,1);%作第一子图
plot(t,s);
subplot(2,2,2); %作第二子图
plot(t,x);
x1=cos(2*pi*t/10);
x2=sin(2*pi*t/10);
%初始化
w1=0.1;
w2=0.1;
e=zeros(1,N);
y=0;
u=0.05;%迭代步长
for i=1:N
y=w1*x1(i)+w2*x2(i);
e(i)=x(i)-y;%误差信号
w1=w1+u*e(i)*x1(i);%迭代方程
w2=w2+u*e(i)*x2(i);%迭代方程
end
subplot(2,2,3); %作第三子图
plot(t,e);
subplot(2,2,4); %作第四子图
plot(t,s-e);
6.自适应滤波器的仿真程序:
function LMS_adaptive_filter;%定义功能函数samples_per_period=40;%周期采样频率
N=10*samples_per_period-1;%总采样次数
signal=sin(2*pi*0.02*[0:N-1]);%初始输入信号
figure;%作图1的第一子图
subplot(2,1,1);
plot(signal);
grid;
title('自适应滤波器的理想输入');
nvar=0.5;%噪声方差
noise=nvar*randn(1,N);%噪声信号
X=signal+noise;%带加性噪声的输入信号
delayX=[0 X];%输入信号延时
SIGNAL=[signal 0];
M=32;%滤波器长度
mu=0.035;%迭代步长
subplot(2,1,2);%作图1的第二子图
plot(delayX);
grid;
title('自适应滤波器的噪声输入');
initial_status=initlms(zeros(1,M),mu);%滤波器设初值
[Y,e,initial_status]=adaptlms(X,SIGNAL,initial_status);%LMS自适应滤波器输出figure;%作图2的第一子图
subplot(2,1,1);
plot(0:N-1,Y,'.',0:N,SIGNAL,'k');
grid;
title('预测信号与实际信号的比较');
legend('预测信号,实际信号');
error=signal-Y;%输出误差信号
subplot(2,1,2);%作图2的第二子图
plot(error);
grid;
title('自适应滤波器的预测误差');