基于LMS算法与RLS算法的自适应滤波
来源:六九路网
第20卷 第12期 电子设计工程 2012年6月 V01.20 No.12 Electronic Design Engineering Jun.2012 基于LMS算法与RLS算法的自适应滤波 徐艳。李静 (长安大学信息工程学院,陕西西安710064) 摘要:自适应信号处理的理论和技术已经成为人们常用滤波和去噪技术。文中讲述了自适应滤波的原理以及LMS 算法和RLS算法两种基本自适应算法的原理及步骤。并用MATLAB分别对两种算法进行了自适应滤波仿真和实现。 关键词:自适应滤波;LMS算法;RI_S算法;Matlab 中图分类号:TP312 文献标识码:A 文章编号:1674—6236(2012)12—0049—03 Adaptive filter based on LMS and RLS algorithm XU Yah,LI Jing (College ofInformationEngineering,Chang'an University,Xi’art 710064,China) Abstract:The theory and technology of adaptive signal processing have become popular in filtering and canceling noise field. This article mainly talks about the theory of adaptive filtering and steps of the arihtmetic based on LMS&RLS.Emulations successfully showed hte theory by MATLAB in this paper. Key words:adaptive filter;LMS algorithm;RLS algorithm;MATLAB 随着数字信号处理器性能的增强,自适应滤波器的应用 也越来越常见,它主要应用于系统辨识、回波消除、自适应谱 线增强、自适应信道均衡、语音现行预测、自适应天线阵等诸 多领域中。自适应滤波器是根据环境的改变,使用自适应算 法来改变滤波器的参数和结构。自适应滤波器算法决定了滤 号或期望 波的性能.根据滤波算法优化准则不同,自适应滤波器算法 信号 可分为两类基本算法:最小均方误差(LMS)算法和递归最小 图1 自适应滤波器的一般结构 二乘(RLs)算法。 Fig.1 General structure of adaptive filter 1 自适应滤波器的原理 自适应滤波就是利用前一时刻获得滤波器参数的结果 自动的调节现时刻的滤波器参数,以适应信号和噪声未知的 或随时间变化的统计特性,从而实现最优滤波。自适应滤波 器实质上就是一种能调节其自身传输特性以达到最优的维 纳滤波器。自适应滤波器的特性变化是由自适应算法通过调 整滤波器系数来实现的。一般而言.自适应滤波器由参数可 调的数字滤波器和自适应算法两部分组成。参数可调数字滤 图2直接型自适应滤波器FIR滤波器 波器可以是FIR数字滤波器或IIR数字滤波器,也可以是格 Fig.2 Direct type adaptive iflter FIR filter 型数字滤波器。自适应滤波器的一般结构如图1所示[5-6]。 2自适应滤波算法 图1中 (n)为输入信号。通过参数可调的数字滤波器后 产生输出信号,,(n),将输出信号’,(n)与期望信号d( )进行 自适应滤波器的算法主要是以各种判据条件作为推算 比较,得到误差信号e(n)。e(n)和 (n)通过自适应算法对滤 基础的。通常有两种判据条件:最小均方误差判据和最dx- 波器的参数进行调整,调整的目的使得误差信号e(n)最小。 乘法判据。即自适应滤波有两类基本的算法:最小均方误差 自适应滤波器大多用FIR来实现。直接型自适应滤波器 (LMS)算法和递归最小二乘(RLS)算法I”。 FIR滤波器如图2所示。 1)最小均方误差(Least Mean Square。LMS)算法 最小均方误差(Least Mean Square.LMS)算法是一种易于 收稿日期:2012—04—05 稿件编号:201204025 作者简介:徐艳(1988一),女,陕西渭南人,硕士研究生。 研究方向:智能交通与信息系统工程。 -49- 《电子设计工程}2012年第l2期 实现、性能稳定、应用广泛的算法。LMS算法设法使 (n)接近 当e(k)达到最小值时,有下列关系: R( ) W ( )=lP(|i}) (9) d(n),理想信号d(n)与滤波器输出y(n)之差e(17,)的期望值 最小,并且根据这个判据来修改权系数w (n)。均方误差8表 示为: 其中: ( ):∑ 一 (n) (n);P( )=∑ 一t (n) (n) w (k)为均方误差达到最小时的自适应滤波器最佳权系 a=E[e (n)】=E{耐(n)一y(n)]2} (1) 对于横向结构的滤波器。代人y(n)的表达式: e=E[dz(n)】+ (n) (n)一2W (n)P (2) 其中:R=E[X( ) (n)】为Ⅳ×Ⅳ的自相关矩阵,它是输人 信号采样值间的相关性矩阵。 E【d(n) (n)]为Nxl互相关 矢量,代表理想信号d(n)与输入矢量的相关性。在均方误差 £达到最小时,得到最佳权系数W = , ,…, 。r它应满 足下式: 塑~=0 (3) OW(n) ) 求解最佳权系数 的两种方法,一种是最陡梯度法。其 思路为:设计初始权系数 (O),用W(n+1)= (n)一uA(//,)迭 代公式计算,到 (n+1)与 (n)误差小于规定范围。其中 △(n)的Ell计算可用估计值表达式为: 1 (n) (n)}垒 1∑e(n—i)X(n— ) (4) J i=O 上式 取值应足够大。如果用瞬时一2e(n) (n)来代替上 面对一2E{e(n)X(n)}的估计运算,就产生了另一种算法——随 机梯度法,此时迭代公式为: W(斛1)= (n)+2ue(n)X(n) (5) LMS算法基本上是一种递推算法,它用任意选择的{h(k)} 的初始值作为开始,然后将每一新的输入样本 (n)}输人到 这个自适应FIR滤波器,计算相应的输出 (n)},形成误差信 号e(it,)=d(n)一Y(n)并按方程^ ( ): (k)+Ae(n)x(n—k), 0<-k≤Ⅳ一1更新滤波器系数,这里△称为步长参数, (n—k) 是输入信号在时间n位于滤波器的第k个样本,而e(n)x(n-k) 是对第k个滤波器系数的一个梯度负值的近似估计目。 2)递归最小二乘(Recursive Least Square,RLS)算法 递归最小二乘(Recursive Least Square,RLS)算法是在最 小均方误差算法的基础上得来的。所不同的是在求均方误差 时观测数据的长度是变化的,且随着观测数据的时间先后顺 序分别乘了加权因子。即RLS算法的均方误差变成: k s( )=∑3(k,n)l8(n)l z (6) n=O 式中:卢(k,n)是加权因子,满足:0 (k,n)≤1,n=l,2, …,k。这样会使很多次迭代之前的数据被遗忘掉,当滤波器工 作在非平稳环境中时,观测数据仍可能服从统计变化的一些 特性。其中遗忘因子的最常用形式为指数加权因子,即: p(k,n)= ,n=l,2,…, (7) 式中: 是一个接近1但小于l的数。将式(7)代人式(6) 可以得到均方误差的具体表达式为: s( =∑ 一ls(n)l z (8) n=0 -50.. 数。由式(9)可知,要求出w (k)需要先确定。为此我们把R (k)当前的瞬时估计分离出来: R( )= cr (n) (n)} (.i}) (J}):;0 ( 一1)4x( )xn(k)(1O) 对于P(k)做同样的处理可以得到: P(k)= (k-1)帆( ) ( ) (11) 由矩阵求逆定理:若A和B是2个MxM的正定矩阵.存 在关系 :曰+C D~*CX,其中C是一个MxN矩阵。D是一个 NxN正定矩阵,则有A=口— }C(D+ 曰 C)~。可以令A=R( ), B=a*R(k-1),C=( ),D=1代人上面的矩阵逆定理公式可得: R-l㈩=oF1*R_】( )_ (12) l 【 )or t 一I J 【 J 如果记: )(13).r㈤= (14) 则式(12)变形如下: Q(k)=OC Q(k一1) r(k) ( )Q(k—1) (15) 把式(15)反代入式(14)可以得到以下的关系:r(k)= (|i})x(k) 由式(9)得到计算权向量的公式为: w(k)= (|i})P(k)=Q( (k) ・Q(k (k-1)+Q( ) (k)d(k) (16) 将式(15)代入式(16)右端第一项可以得到:W(k)= (k一 1)+r( )・n(k)。 式中:t/(k)=d( 一W ( 一1) (k)。这样就得到了权向量迭 代的计算公式。 总结以上推导步骤归纳出RLS算法实现流程如下: Q(o)---8—1・,,6=0.005-0.0l; W(0)=0; 对于每一个时刻的k=l,2,…,计算: r(k)= :Qi = ) ! 2 . 1+x ( ) Q(k一1)x(k)’ n(k)=d( )一M ( 一1) (k); w(k)=z (|j}一1)+r( )・n(k); Q(k)= Q(k-1)0/- r(k)xfi( )Q(k-1)。 3 MATLAB仿真实验 1)LMS算法的自适应滤波部分实现程序代码如下 w(【l:N])=0; for loop=1:Num if(1oop<N) temp=x([1oop:一l:l】); temp([1oop+l:N])=O; 徐艳。等 基于LMS算法与RLS算法的自适应滤波 else temp=x([1oop:一1:loop—N+1】); end lms—out(1oop)=w temp.’; u=l/(100+temp temp.’); lms—err=s(1oop)-lms_out(1oop); w=w+2 u lms_err*temp: end ifgure(2); subplot(2,1,1);plot(1ms_out);title(‘LMS输出信号’); grid Oil; axis([0 Num一2 2】); subplot(2,1,2);plot((s-lms_out),‘卜’);title(‘LMS误差’); gnd on; axis([0 Num一1 1】); 仿真结果: LMS输出信号 LMS误差 量 一10 500 1000 15O0 20O0 25O0 3000 3500 4000 图3 LMS算法的自适应滤波仿真结果 Fig.3 LMS algorithm of adaptive filter simulation results 2)RLS算法的自适应滤波部分实现程序代码如下: w(【1:N]):0; R=100 eye(N); value=0.98; for loop=1:Num if(1oop<N) temp=x([1oop:-l:1】); temp([1oop+1:N])=0; else temp=x([1oop:一1:loop—N+1】); end rls_out(1oop)=w temp."; ds_en=s(1oop)-rls_out(1oop); w=w+temp R ds_err/(value+temp R temp.’); R=(R—R temp.'*temp Pd(value+temp R temp.’))/value; end ifugre(3); subplot(2,1,1);plot(rls_out);title(‘RKS输出信号’); rid on; axis([0 Num-2 21); subplot(2,1,2);plot((s--rls_out),‘ ’);tilte(‘RLS误差’); gria on; axis([0 Num-2 2】); 仿真结果: RLS输出信号 ● t T 5 I 一 ・-}……・・}……- }…… -{……一一;……-・{…… 一 ; ; (下转第54页) 一51—