文档库 最新最全的文档下载
当前位置:文档库 › RLS和LMS自适应算法分析

RLS和LMS自适应算法分析

RLS和LMS自适应算法分析
RLS和LMS自适应算法分析

RLS 和LMS 自适应算法分析

摘要:本文主要介绍了自适应滤波的两种算法:最小均方(LMS,

Least Mean Squares)和递推最小二乘(RLS, Recursive Least Squares)两种基本自适应算法。我们对这两种基本的算法进行了原理介绍,并进行了Matlab 仿真。通过仿真结果,我们对两种自适应算法进行了性能分析,并对其进行了比较。用Matlab 求出了LMS 自适应算法的权系数,及其学习过程曲线,和RLS 自适应权系数算法的学习过程。

关键词:自适应滤波、LMS 、RLS 、Matlab

仿真

Abstract: this article mainly introduces two kinds of adaptive filtering algorithms: Least Mean square (LMS), further Mean Squares) and Recursive Least Squares (RLS, Recursive further Squares) two basic adaptive algorithm. Our algorithms of these two basic principle is introduced, and Matlab simulation. Through the simulation results, we have two kinds of adaptive algorithm performance analysis, and carries on the comparison. Matlab calculate the weight coefficient of the LMS adaptive algorithm, and its learning curve, and the RLS adaptive weight coefficient algorithm of the learning process.

Keywords:, LMS and RLS adaptive filter, the Matlab simulation

课题简介:零均值、单位方差的白噪声通过一个二阶自回归模型产

生的AR 过程。AR 模型的系统函数为:

H(Z)=2

18.06.111--+-Z Z

假设1a =-1.6,2a =0.8将系统函数转化为差分方程为:

)()2()1()(21n w n a n x a n x +----=

其中w(n)为白噪声,参数1a =-1.6,2a =0.8。激励源是白噪声w(n)。 本文用Matlab 仿真做出了模型系数的收敛过程及平均的学习曲线。

分别用LMS算法和RLS算法,分别做出了模型系数的收敛过程及学习曲线,还对两种算法的特性进行了对比。

引言:由于随机信号的未知性和随时间变化的统计特性,需要设计参数随时间变化的滤波器算法,即所谓的自适应滤波。它是利用前一时刻以获得的滤波器参数的结果,自动的调节现时刻的滤波器参数,以适应信号和噪声未知的或随时间变化的统计特性,从而实现最优滤波。自适应滤波器的特性变化是由自适应算法通过调整滤波器系数来实现的。不同的自适应滤波器算法,具有不同的收敛速度、稳态失调和算法复杂度。

自适应滤波算法中利用了输出反馈,属于闭环算法。其优点是能在滤波器输入变化时保持最佳的输出,而且还能在某种程度上补偿滤波器元件参数的变化和误差以及运算误差。但其缺点是存在稳定性问题以及收敛速度不高。所以探讨如何提高收敛速度、增强稳定性以满足信号处理的高效性、实时性,一直是人们研究的重点和热点。本文基对比研究了两类基本的自适应算法LMS和RLS,并对它们权系数的收敛过程及学习过程进行了分析。

LMS原理分析:

LMS算法是自适应滤波器中常用的一种算法与维纳算法不同的是其系统的系数随输入序列而改变。维纳算法中截取输入序列自相关函数的一段构造系统的最佳系数。而LMS算法则是对初始化的滤波器系数依据最小均方误差准则进行不断修正来实现的。因此理论上讲LMS算法的性能在同等条件下要优于维纳算法但是LMS算法是在一个初始化值得基础上进行逐步调整得到的因此在系统进入稳定之前有一个调整的时间这个时间受到算法步长因子μ的控制在一定值范围内增大μ会减小调整时间但超过这个值范围时系统不再收敛μ的最大取值为R的迹。LMS采用平方误差最小的原则代替均方误差最小的原则,信号基本关系如下:

)

()()(1

i n x n w n y N i -=∑-

)()()(n y n d n e -=

)

()(2)()1(i n x n e n w n w i i -+=+μ

写成矩阵形式为:

)()()(n X n W n y T

=

)()()(n y n d n e -=

)()(2)()1(n X n e n W n W μ+=+ 式中

W(n)为

n

时刻自适应滤波器的权矢量,

T

N n w n w n w n w n W )]()........(),(),([)(1210-=

N 为自适应滤波器的阶数。X(n)为n 时刻自适应滤波器的参考输入矢

量,由最近的N 个信号的采样值构成,T

N n x n x n x n X )]1()......1(),([)(---=。

d(n)是期望的输出值;e(n)为自适应滤波器的输出误差调节信号;μ是控制自适应速度与稳定性的增益常数。

LMS 的算法流程图:

RLS 算法原理分析:

λ为遗忘因子,它是小于1的正数

)(n d :参考信号或期望信号 )(n w 第n 次迭代的权值

)(n ε均方误差

按照如下准则:

min

)()(20

→=∑=-k e n n

k k n λε

越旧的数据对)(n ε的影响越小。对滤波器的系数w 求偏导,并令结果等于0知

0)()(2)

(0=-=??∑=-k x k e w n n

k k n λε

整理得到标准方程为:

∑∑=-=-=n

k k n n

k T

k

n k x k d w k x k x 0

0)

()(])()([λλ

定义:

∑=-=n

k k n k x k d n R 0)

()()(λ

∑=-=n k k n k x k d n P 0

)

()()(λ

标准方程可以简化为:

)()(n P w n R =

经求解可以得到迭代形式:

)1()1()()1(+++=+n x n x n R n R T λ

)1()1()()1(+++=+n x n d n P n P λ

定义:

)()(1

n R n T -=,则可知T 的迭代方程为: 11)]()()1([)(--+-=n x n x n T n T T λ

系数的迭代方程为

)1|()()1()(-+-=n n e n k n w n w

其中增益)(n k 和误差)1|(-n n e 的定义分别为:

)()1()()1|(n x n w n d n n e T --=-

)()1()()

()1()(n x n T n x n x n T n k T -+-=

λ

参数递推估计,每取得一次新的观测数据后,就在前次估计结果的基础上,利用新引入的观测数据对前次估计的结果,根据递推算法进行修正,减少估计误差,从而递推地得出新的参数估计值。这样,随着新观测数据的逐次引入,一次接一次地进行参数估计,直到参数估计值达到满意的精确程度为止。

RLS 算法流程图:

计算T(n),w(n),k(n),e(n|n-1)

)

()()(10

i n

x n w n y N i -=

∑-

计算误差e(n)=d(n)-y(n)

更新权)1|()()1()(-+-=n n e n k n w n w

LMS 算法程序:

clear close all clc

a1=-1.6; a2=0.8; n=1000; P=50;

初始化

(0)0W =;1(0)P I σ-=

e=zeros(1,n);

ep=zeros(1,n);

ee=zeros(1,n);

x=zeros(1,n)';

w=randn(1,n)';

%算法

for p=1:P

x(1)=w(1);

x(2)=-a1*x(1)+w(2);

for i=3:n

x(i)=-a1*x(i-1)-a2*x(i-2)+w(i);

end

L=2;

u=0.0005;

wL=zeros(L,n);

for i=(L+1):n

X=x(i-L:1:(i-1));

y(i)=X'*wL(:,i); %i时刻输出信号

e(i)=x(i)-y(i); %i时刻误差信号

wL(:,(i+1))=wL(:,i)+2*u*e(i)*X; %i时刻滤波器的权值

ee(i)=e(i)^2;

end

ep=ep+ee;

end

eq=ep/P;

a1L=-wL(2,1:n); % a1在LMS算法下值的变化,wL矩阵中第一行的1到n个数

a2L=-wL(1,1:n); % a2在LMS算法下值的变化,wL矩阵中第二行的1到n个数

%画图

subplot(2,2,1);

plot(1:n,x);

title('高斯白噪声w');

subplot(2,2,2);

plot(1:n,a1L,'r-',1:n,a1,'k-'); title('a1的学习过程');

subplot(2,2,3);

plot(1:n,a2L,'r-',1:n,a2,'k-'); title('a2的学习过程');

subplot(2,2,4);

plot(1:n,eq);

title('50次平均后的学习过程');

相关文档