自适应滤波LMS算法及RLS算法及其仿真.doc
自适应滤波 第1章绪论111自适应滤波理论发展过程112自适应滤波发展前景2121小波变换与自适应滤波2122模糊神经网络与自适应滤波3第2章线性自适应滤波理论421最小均方自适应滤波器4211最速下降算法4212最小均方算法622递归最小二乘自适应滤波器7第3章 仿真123.1 基于LMS算法的MATLAB仿真123.2 基于RLS算法的MATLAB仿真15 组别:第二小组 组员:黄亚明 李存龙 杨振 第1章绪论 从连续的(或离散的)输入数据中滤除噪声和干扰以提取有用信息的过程称为滤波。相应的装置称为滤波器。实际上,一个滤波器可以看成是一个系统,这个系统的目的是为了从含有噪声的数据中提取人们感兴趣的、或者希望得到的有用信号,即期望信号。滤波器可分为线性滤波器和非线性滤波器两种。当滤波器的输出为输入的线性函数时,该滤波器称为线性滤波器,当滤波器的输出为输入的非线性函数时,该滤波器就称为非线性滤波器。自适应滤波器是在不知道输入过程的统计特性时,或是输入过程的统计特性发生变化时,能够自动调整自己的参数,以满足某种最佳准则要求的滤波器。11自适应滤波理论发展过程 自适应技术与最优化理论有着密切的系。自适应算法中的最速下降算法以及最小二乘算法最初都是用来解决有无约束条件的极值优化问题的。 1942年维纳(Wiener)研究了基于最小均方误差(MMSE)准则的在可加性噪声中信号的最佳滤波问题。并利用WienerHopf方程给出了对连续信号情况的最佳解。基于这准则的最佳滤波器称为维纳滤波器。20世纪60年代初,卡尔曼(Kalman)突破和发展了经典滤波理论,在时间域上提出了状态空间方法,提出了一套便于在计算机上实现的递推滤波算法,并且适用于非平稳过程的滤波和多变量系统的滤波,克服了维纳(Wiener)滤波理论的局限性,并获得了广泛的应用。这种基于MMSE准则的对于动态系统的离散形式递推算法即卡尔曼滤波算法。这两种算法都为自适应算法奠定了基础。从频域上的谱分析方法到时域上的状态空间分析方法的变革,也标志着现代控制理论的诞生。最优滤波理论是现代控制论的重要组成部分。在控制论的文献中,最优滤波理论也叫做Kalman滤波理论或者状态估计理论。从应用观点来看,Kalman滤波的缺点和局限性是应用Kalman滤波时要求知道系统的数学模型和噪声统计这两种先验知识。然而在绝大多数实际应用问题中,它们是不知道的,或者是近似知道的,也或者是部分知道的。应用不精确或者错误的模型和噪声统计设计Kalman滤波器将使滤波器性能变坏,导致大的状态估计误差,甚至使滤波发散。为了解决这个矛盾,产生了自适应滤波。最早的自适应滤波算法是最小JY(LMS)算法。它成为横向滤波器的一种简单而有效的算法。实际上,LMS算法是一种随机梯度算法,它在相对于抽头权值的误差信号平方幅度的梯度方向上迭代调整每个抽头权值。1996年Hassibi等人证明了LMS算法在H。准则下为最佳,从而在理论上证明了LMS算法具有孥实性。自Widrow等人1976年提出LMs自适应滤波算法以来,经过30多年的迅速发展,已经使这一理论成果成功的应用到通信、系统辨识、信号处理和自适应控制等领域,为自适应滤波开辟了新的发展方向。在各种自适应滤波算法中,LMS算法因为其简单、计算量小、稳定性好和易于实现而得到了广泛应用。这种算法中,固定步长因子对算法的性能有决定性的影响。若较小时,算法收敛速度慢,并且为得到满意的结果需要很多的采样数据,但稳态失调误差较小:当“较大时,该算法收敛速度快,但稳态失调误差变大,并有可能使算法发散。收敛速度与稳态失调误差是不可兼得的两个指标。以往的文献对LMS算法的性能和改进算法已经做出了相当多的研究,并且至今仍然是一个重要的研究课题。另一类重要的自适应算法是最小二乘(LS)算法。LS算法早在1795年就由高斯提出来了,但LS算法存在运算量大等缺点,因而在自适应滤波中一般采用其递推形式递推最小二乘(RLS)算法,这是一种通过递推方式寻求最佳解的算法,复杂度比直接LS算法小,因而获得了广泛应用。1994年Sayed和Kailath建立了Kalman滤波和RLS算法之间的对应关系,证明了RLS算法事实上是Kalman滤波器的一种特例,从而使人们对RLS算法有了进一步的理解,而且Kalman滤波的大量研究成果可应用于自适应滤波处理。这对自适应滤波技术起到了重要的推动作用。基本上,现有的参考文献都是基于这两种算法进行改进的。而这两种算法又可以简单的用以下语句来描述:LMS:(抽头权向量更新值)=(老的抽头权向量值)+(学习速率)(抽头输出向量)(误差信号)RLS:(状态递推值)=(旧的状态值)+(卡尔曼增益)(新息向量)以往的研究多集中在线性滤波方面,非线性滤波理论还有待于进一步的研究开发。12自适应滤波发展前景现代信号处理理论为自适应滤波技术的发展提供了广阔的空间。尤其是小波技术和人工智能理论的发展,更是推动和加快了自适应滤波技术的前进。121小波变换与自适应滤波小波变换是由法国地球物理学家Morlet于80年代初在分析地球物理信号时作为种信号分析的数学工具提出来的。通俗地讲,小波是一种短期波。在积分变换中,小波作为核函数的用法大体与傅立叶分析中的正弦和余弦函数或与沃耳什(Walsh)分析中的沃耳什函数的用法相同。目前,小波分析主要用于信号处理、图像压缩、次能带编码、医学显像、数据压缩、地震分析、消除噪声数据、计算机图像、声音合成等领域。小波变换的基本特点是多分辨率或多标度的观点,目的是“既要看到森林(信号的概貌),又要看到树木(信号的细节)”。借助于小波的精辟理论,自适应滤波技术有了新的发展方向,这也引起了信号处理领域许多学者专家的浓厚兴趣和热切关注。基于小波变换的自适应滤波技术是未来自适应滤波发展的方向之一,有着广阔的应用前景。目前还有许多问题亟待解决,例如不同形式的小波滤波器的滤波效果研究;在时变信号滤波方面的应用研究以及对于失调噪声的滤波等等。122模糊神经网络与自适应滤波 神经网络作为一种新的计算方法,已经引起了人们广泛的研究兴趣。神经网络可以认为是一种由许多称为“神经元”(neuron)的基本计算单元通过广泛的连接所组成的网络。它是在现代神经科学研究成果的基础上提出来的,反映了人脑功能的基本特征。网络的信息处理由神经元之间的相互作用来实现,网络的学习与识别决定于各神经元之间联接权系数的动态变化过程。人工神经网络是模仿和延伸人脑认知功能的新型智能信息处理系统,由于神经元本身具有高度自适应性,因而由大量神经元组成的神经网络具有自学习性、自组织性、巨量并行性、存储分布性、结构可变性等特点,能解决常规信息处理方法难以解决或无法解决的问题。模糊技术也是现代智能理论的一个重要方面。利用模糊技术我们可以很容易的将人们熟悉的语言描述应用到自动控制或信号处理中来,然而,模糊理论与神经网络都存在着各自的优缺点。 模糊逻辑和神经网络在许多方面具有关联性和互补性。它们的交叉研究正是基于二者互补性和关联性的结合。首先,两者具有互补性。一方面,模糊技术的特长在于模糊推理能力,容易进行高阶的信息处理。将模糊技术引入神经网络,可以大大拓宽神经网络处理信息的范围和能力,使其不仅能够处理精确信息,也能够处理模糊信息或其它不精确信息,不仅能够实现精确性联想及映射,也能够实现不精确性联想及映射,特别是模糊联想和模糊映射。另一方面,神经网络在自学习和自动模式识别方面有极强的优势,采取神经网络技术进行模糊信息处理,则使得模糊规则的自动提取及隶属函数的全自动生成有可能得以解决。其次,两者具有关联性,有许多共同点。它们都着眼于模拟人的思维,都是为了处理实际中不确定性、不精确性等引起的系统难以控制等问题。两者在形式上有不少相似之处,其信息都是分布式存储于其结构之中,从而都具有好的容错能力。不管是神经网络还是模糊逻辑,都不需要建立数学模型,只需根据输入的采样数据去获取所需的结论,也就是模型无关估计器。另外,神经网络的映射功能早已得到证明。近年来,Kosko、L。XWang等证明了模糊系统能以任意精度逼近紧密集上的实连续函数,这也说明了二者之间有着密切的关系。因此,将两者融合在一起的模糊神经网络可以有效的克服两者的缺点,提高整个网络的性能。譬如;神经网络可以降低透明程度,使它们更接近于模糊系统;而模糊系统可以提高自适应性,更接近于神经网络。神经网络与模糊神经网络有力的推动了自适应滤波技术,特别是非线性自适应滤波技术的发展。事实上,一个神经网络或模糊神经网络本身就可以看作是一个自适应滤波器。第2章线性自适应滤波理论线性自适应滤波理论比非线性自适应滤波理论发展的比较早、比较成熟。这里只重点介绍基本的最小均方(LMS)年tl最小二乘(LS)自适应滤波器。21最小均方自适应滤波器本节所讨论的LMS算法是应用最广泛的一类算法,从理论体系上来看,最优化方法中的最速下降法是随机梯度信息处理的一种递归算法,在误差性能未知的情况下,它可以寻求误差曲面的最小点,可为平稳随机条件下的LMS算法提供若干启发性思路,并且是分析算法性能的重要基础。211最速下降算法最速下降法是一种不用求矩阵逆来解正规方程组的方法。它通过递推方式寻求加权矢量的最佳值。虽然在自适应滤波中很少直接使用最速下泽算法,但它构成了其它自适应算法、特别是LMS算法的基础。图21表示一个横向滤波器。图21横向滤波器输入矢量为(21)加权矢量(即滤波器参数矢量)为 (22)滤波器输出为 (23)利用图2-1中输出信号y(n)与期望信号的d(n)的关系,误差序列e(n)可以写成:e(n)=d(n)-y(n) (24)自适应滤波器就是根据误差序列8(行)按照某种准则和算法对其系数w(n)进行调整,最终使自适应滤波器的目标(代价)函数达到最小,即最佳滤波状态。按照均方误差(MSE)准则所定义的目标函数是F(e(n)=(n)=Ee2(n)=Ed2(n)-2d(n)y(n)+y2(n) (2-5) 将式(23)代入上式,得到(n)=Ed2(n)-2Ed(n)wT(n)x(n) +EwT(n)x(n)xT(n)w(n) (2-6)固定滤波器系数,则目标函数(26)可写为(n)= =Ed2(n)-2wT p+wT w (27)式中,R=Ex(n)xT (n) 是输入信号的自相关矩阵;P=Ed(n)x(n)是期望信号与输入信号的互相关矢量。假设输入自相关矩阵R为非奇异的,当R与P均已知时,将式(27)对W求导数,并令其等于零,可得到使目标函数最小的最佳滤波参数W。为W。=R-1P (2-8)这个解称为维纳解,即最佳滤波参数值。从式(27)可以看出,自适应滤波器的目标函数是滤波参数W的二次函数,因此形成了一个多维的超抛物曲面,二维时好像是一个碗状的曲面且具有唯一的碗底最小点。这个多维的超抛物曲面通常称之为自适应滤波器的误差性能曲面。位于该曲面上的某一点,经过自适应调节过程,可以朝碗底最小方向移动,最终到达最小点。最速下降法就是实现这种从初始值到最佳值搜索的一种优化技术,它利用梯度信息分析白适应滤波性能和最佳滤波状态,避免了对输入信号自相关矩阵R直接求逆。可以想象,沿着减小的方向调整权值W,应该可以找到最佳值W。,因为梯度的方向是增长最快的方向,所以负的梯度方向就是减少最快的方向,这样,就可以采用如下的递推公式来调整W以寻找W。: (2-9)式中,(n)代表珂时刻孝的梯度,是一个M1维的矢量,这里M为滤波器滤波权系数的数目;u是一个正实常数,通常被称为步长或步长因子。根据梯度定义,(n)可以写成:将式(27)对W取偏导,可以得到:将式(211)代入式(2-9)可得到最速下降法的递推公式:有关最速下降法的收敛性,这里只给出其结果。当最速下降法满足下面条件时是收敛的: 0<<max式中,max是自相关矩阵R的最大特征根。212最小均方算法如上节所述,要使用最速下降法,就要知道均方误差性能函数的梯度的精确值,见式(211),这就要求输入信号x(n)和期望信号d(n)平稳,并且要求它们的二阶统计特性已知。而这是相当复杂的,很多情况下它们是未知的或不完全知道的,因此一般采用梯度的估计值(n)来代替梯度(n),即最小均方(LMS)算法就是使用瞬时输出误差功率的梯度 Ee2(n)作为均方误差梯度 Ee2(n)的估计值,也就是令将式(215)代入式(2-14),有式(216)就是LMS算法的递推公式。自适应LMS算法简单,既不需要计算输入信号的相关函数,又不需要求矩阵的逆,因而得到了广泛应用。但是,由于LMS算法采用梯度矢量的瞬时估计,它有很大的方差,以至不能获得最优滤波性能。下面给出完整的算法步骤:有关参量:M滤波器抽头数;步长;0<<(MPin)-1,Pin=Ex1(n)2初始条件:w(O)=0或者由先验知识确定计算步骤:对于H=1,2,(1)取x(n),d(n)(2)滤波y(n)=WT(n)x(n)(3)估计误差e(n)=d(n)-y(n)(4)更新权向量w(H+1)=w(n)+e(n)x(n)当滤波器的输入信号为有色随机过程时,特别是输入信号为高度相关的情况,大多数自适应滤波算法的收敛速度都要下降,对于上述典型LMS算法。此问题更加突出。为了提高收敛速度,相继提出了多种改进的算法。下面给出几种改进的权值递推公式:(1)归一化LMS算法:式中,0<<1为控制失调的固定收敛因子;是为了避免XT(n)x(n)过小而导致步长值太大而设置的正常数。(2)简化的LMS算法:(3)MLMS算法:以上这几种改进LMS算法中,前两种都是交步长方法,后一种采用的是改变梯度估值的方法。除了这几种方法以外,还有很多改进的算法,比如变换域LMS算法,该算法适用于输入信号具有高度相关性的情况下;频域LMS算法,该算法与经典梯度下降法相比较有着更好的收敛性;分块LMS算法,与其它方法相比该算法计算量大为减少;最小高阶均方(LMK)算法,该算法是LMS算法的扩展,或者说LMS算法是该算法的特例,当系统噪声为非高斯分布时,LMK算法要比LMS算法收敛精度高;QR分解LMS算法,该算法适用于横向延迟线抽头数目比较小的情况。其它方法这里不再列举。22递归最小二乘自适应滤波器最小二乘(LS)法是一种典型的有效的数据处理方法,既可用于静态系统,又可用于动态系统:既可用于线性系统,又可用于非线性系统;既可用于离线估计,又可用于在线估计。递归最小二乘(Recursive Least Square简写RLS)是最小乘法的一种快速算法,它包含时间递归最小二乘(TRLS)算法和阶数递归最小二乘(ORES)算法两方面内容,一般前者适用于动态系统辨识和在线估计,后者适用于静态系统辨识和离线估计。与LMS算法相比,RLS算法有着非常快的收敛速度。图2-2自适应RLS算法采用RLS算法的自适应滤波器如图2-2所示。输入信号x(n),含有N个已知样本x(1), x(2), x(3)x(N),期望输出为d(n)=d(1),d(2),d(N)。滤波器输出为M为滤波器长度,且MN。误差信号为e(n)=d(n)-y(n) (2-23)按照最小平方准则,设计滤波器目标函数为将式(2-22)代入式(224)得到定义如下参量:为确定性自相关函数,表示输入信号在抽头k与抽头m之间两信号的相关性:为确定性互相关函数,表示期望响应与在抽头K输入信号之间的互相关性:为期望响应序列的能量。将式(2-26)(2-28)代入式(225),目标函数可写为因此有令式(2-30)等于零,得到把它简化成矩阵形式,有式中,w(n)为M1维最小平方估计的滤波器系数矢量,即(n)为延迟线抽头输入信号的确定性自相关函数,是一个MM维矩阵即(n)为脉冲响应序列与输入信号之间的确定性互相关函数M1维矢量,即假定矩阵(n)是非奇异的,其逆矩阵存在,则由(2-32)可求得式f2,36)就是最+-乘法自适应滤波算法的正规方程。从式中可以看出,它要求(n)是可逆的矩阵,虽然如此,但是对大多数应用来说这都是成立的。若对于某应用(n)为降秩,即为不可逆矩阵,则式(2-36可理解为采用了伪逆矩阵。下面推导RLS算法由式(2,36)有根据式(226)可得到写成矩阵形式利用矩阵求逆定理再由式(2-39)可求得引入MM维矩阵和N维矢量K(n)被称为增益系数。将式(242)和式(2-43)代入(2-41)得到上式两边右乘x(n)用式(243)中分母多项式右乘上式两边,整理得到把上式带入式(245)中,可化简成下式另外,根据式(227)有如下递推关系式写成矩阵形式式中M1维矢量d(n)x(n)代表递归计算的更新校正项,把式(242)代入式(2-36)得到:再将式(2-49)代入上式,并由式(2-47)可得到将式(2-44)代入式(2-51)中,且根据式(2-50)有上式就是RLS算法的递推公式。与LMS算法相比较,两者的主要差别在于增益系数,LMS算法简单的利用输入矢量乘上常数,而RLS算法则用较复杂的K(n)。下面给出RLS算法的初始条件以及运算步骤:初始条件:w(O)=0;P(O)=-1(0)=-1I为小的正实数运算步骤:对于n=1,2,(1) 取d(n),x(n)(2)(3) 更新滤波器参数(4) 更新逆矩阵第3章 仿真3.1 基于LMS算法的MATLAB仿真在matlab中输入以下程序,可得出仿真结果g=100; %统计仿真次数为gN=1024; %输入信号抽样点数k=128; %滤波器阶数pp=zeros(g,N-k); %将每次独立循环的误差结果存于矩阵pp中,以便后面对其平均u=0.00026; %滤波器收敛因子for q=1:g t=1:N; a=1; s=a*sin(0.05*pi*t); %输入单信号s figure(1); subplot(411) plot(s); %信号s时域波形 title(信号s时域波形); xlabel(n); axis(0,N,-a-1,a+1); xn=awgn(s,5); %加入均值为零的高斯白噪声 %设置初值 y=zeros(1,N); %输出信号y y(1:k)=xn(1:k); %将输入信号xn的前k个值作为输出y的前k个值 w=zeros(1,k); %设置抽头加权初值 e=zeros(1,N); %误差信号 %用LMS算法迭代滤波 for i=(k+1):N XN=xn(i-k+1):(i); y(i)=w*XN; e(i)=s(i)-y(i); w=w+u*e(i)*XN;endpp(q,:)=(e(k+1):N).2;endsubplot(412)plot(xn); %信号s时域波形title(信号s加噪声后的时域波形);subplot(413)plot(y); %信号s时域波形 title(自适应滤波后的输出时域波形);subplot(414)plot(e);title(估计误差e(t)的时域波形);for b=1:N-k bi(b)=sum(pp(:,b)/g; %求误差统计平均endfigure(2); %算法收敛曲线t=1:N-k;plot(t,bi,r);title(收敛曲线);hold on %将每次循环的图形显示结果保存下来3.2 基于RLS算法的MATLAB仿真程序代码:clearN=1000;Fs=500;n=0:N-1;t=n/Fs;xs=( sin(2*pi*5*t);figure(1);subplot(211);plot(t,xs);grid;ylabel(幅度);title(it输入周期性信号);xn=( 0.6*randn(1,length(t);subplot(212);plot(t,xn);grid;ylabel(幅度);xlabel(时间);title(it随机噪声信号);d=xs;x=xs+xn;N=10;w=(zeros(1,N);M=length(x);p=0.1*eye(N,N);a=0.1;y=(zeros(1,M);e=(zeros(1,M);sum1=zeros(N,N);sum2=zeros(N,1);for n=N:M x1=x(n:-1:n-N+1); juzhen=x1*x1; k=(1/a)*p*x1)/(1+(1/a)*x1*p*x1); e(n)=d(n)-w*x1; w=w+k*conj(e(n); p=(1/a)*p-(1/a)*k*x1*p; y(n)=w*x1;endfigure(2);plot(y);grid;title(it自适应滤波器输出信号)figure(3);plot(e);grid;title(it误差)