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模型的系统函数为:
112 H(Z)=11.6Z0.8Z
假设a1=-1.6,a2=0.8将系统函数转化为差分方程为:
x(n)a1x(n1)a2(n2)w(n)
其中w(n)为白噪声,参数a1=-1.6,a2=0.8。激励源是白噪声w(n)。 本文用Matlab仿真做出了模型系数的收敛过程及平均的学习曲线。分别用LMS算法和RLS算法,分别做出了模型系数的收敛过程及学习曲
1 / 15
线,还对两种算法的特性进行了对比。
引言:由于随机信号的未知性和随时间变化的统计特性,需要设计参数
随时间变化的滤波器算法,即所谓的自适应滤波。它是利用前一时刻以获得的滤波器参数的结果,自动的调节现时刻的滤波器参数,以适应信号和噪声未知的或随时间变化的统计特性,从而实现最优滤波。 自适应滤波器的特性变化是由自适应算法通过调整滤波器系数来实现的。不同的自适应滤波器算法,具有不同的收敛速度、稳态失调和算法复杂度。
自适应滤波算法中利用了输出反馈,属于闭环算法。其优点是能在滤波器输入变化时保持最佳的输出,而且还能在某种程度上补偿滤波器元件参数的变化和误差以及运算误差。但其缺点是存在稳定性问题以及收敛速度不高。所以探讨如何提高收敛速度、增强稳定性以满足信号处理的高效性、实时性,一直是人们研究的重点和热点。本文基对比研究了两类基本的自适应算法LMS和RLS,并对它们权系数的收敛过程及学习过程进行了分析。
LMS原理分析:
LMS算法是自适应滤波器中常用的一种算法与维纳算法不同的是其系统的系数随输入序列而改变。维纳算法中截取输入序列自相关函数的一段构造系统的最佳系数。而LMS算法则是对初始化的滤波器系数依据最小均方误差准则进行不断修正来实现的。因此理论上讲LMS算法的性能在同等条件下要优于维纳算法但是LMS算法是在一个初始化值得基础上进行逐步调整得到的在系统进入稳定之前有一个调整的时间制在一定值范围内
增大会减小调整时间
因此
这个时间受到算法步长因子的控但超过这个值范围时系统不再收
敛的最大取值为R的迹。LMS采用平方误差最小的原则代替均方误差最小的原则,信号基本关系如下:
2 / 15
y(n)wi(n)x(ni)0N1
e(n)d(n)y(n)
wi(n1)wi(n)2e(n)x(ni)
写成矩阵形式为:
T y(n)W(n)X(n)
e(n)d(n)y(n)
W(n1)W(n)2e(n)X(n) 式中
W(n)为
n
时刻自适应滤波器的权矢量,
W(n)[w0(n),w1(n),w2(n)........wN1(n)]TN为自适应滤波器的阶数。X(n)为n时刻自适应滤波器的参考输入矢量
,
由
最
近
的
N
个
信
号
的
采
样
值
构
成
,
X(n)[x(n),x(n1)......x(nN1)]T。d(n)是期望的输出值;e(n)为自适应
滤波器的输出误差调节信号;μ是控制自适应速度与稳定性的增益常数。
3 / 15
LMS的算法流程图:
y(n)N10初始化w(n) 读取x(n)和d(n)
wi(n)x(ni) 计算误差e(n)=d(n)-y(n)
计算因子e(n)
更新权W(n1)W(n)2e(n)X(n)
RLS算法原理分析:
为遗忘因子,它是小于1的正数
d(n):参考信号或期望信号 w(n)第n次迭代的权值
(n)均方误差
4 / 15
按照如下准则:
(n)nke2(k)mink0n
越旧的数据对(n)的影响越小。对滤波器的系数w求偏导,并令结果等于0知
n(n)2nke(k)x(k)0wk0
整理得到标准方程为:
[k0nnkx(k)x(k)]wnkd(k)x(k)Tk0n
定义:
R(n)nkd(k)x(k)k0nn
P(n)nkd(k)x(k)k0
标准方程可以简化为:
R(n)wP(n)
经求解可以得到迭代形式:
R(n1)R(n)x(n1)xT(n1)
P(n1)P(n)d(n1)x(n1)
1T(n)R(n),则可知T的迭代方程为: 定义:
T(n)[T1(n1)x(n)xT(n)]1
系数的迭代方程为
w(n)w(n1)k(n)e(n|n1)
其中增益k(n)和误差e(n|n1)的定义分别为:
5 / 15
e(n|n1)d(n)wT(n1)x(n)
k(n)T(n1)x(n)xT(n)T(n1)x(n)
参数递推估计,每取得一次新的观测数据后,就在前次估计结果的基础上,利用新引入的观测数据对前次估计的结果,根据递推算法进行修正,减少估计误差,从而递推地得出新的参数估计值。这样,随着新观测数据的逐次引入,一次接一次地进行参数估计,直到参数估计值达到满意的精确程度为止。
RLS算法流程图:
6 / 15
初始化 W(0)0;P(0)1I 计算T(n),w(n),k(n),e(n|n-1)
y(n)N10
wi(n)x(ni) 计算误差e(n)=d(n)-y(n)
更新权w(n)w(n1)k(n)e(n|n1)
LMS算法程序:
clear close all clc a1=-1.6; a2=0.8; n=1000; P=50; e=zeros(1,n);
7 / 15
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个数
8 / 15
%画图
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次平均后的学习过程');
9 / 15
图1:步长因子μ=0.0005时LMS仿真图形
图2:步长因子μ=0.001时LMS仿真图形
10 / 15
图3:步长因子μ=0.005时LMS仿真图形
结果分析:
1. 在仿真过程中可以看到,图形的收敛时间随着步长因子μ的增大而减小。说明步长因子μ与收敛时间成反比,其决定了LMS算法学习过程的快慢。
2. 由上图对比可知,当步长因子μ增大时,收敛时间减少,但会使失调增大,当μ等于0.0005与0.001时图形没有失调,但当μ等于0.005时,就会发现图形失调严重。
3. 综上所述可得出结论:控制失调与加快收敛速度矛盾。 4.
11 / 15
LMS与RLS对比程序:
程序: clear; close all; clc; a1=-1.6; a2=0.8; n=1000;
x=zeros(1,n)'; w=randn(1,n)'; 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; %LMS滤波 L=2; u=0.001; wL=zeros(L,n); for i=(L+1):n
X=x(i-1:-1:(i-L)); y(i)=X'*wL(:,i); e(i)=x(i)-y(i);
wL(:,(i+1))=wL(:,i)+2*u*e(i)*X; end;
a1L=-wL(1,1:n); a2L=-wL(2,1:n);
12 / 15
%RLS滤波 L=2;
namuta=0.98; wR=zeros(L,n);
T=eye(L,L)*10;% %RLS算法下T参数的初始化,T初始值为10 for i=(L+1):n
X=x(i-1:-1:(i-L)); K=(T*X)/(namuta+X'*T*X);%i时刻增益值 e1=x(i)-wR(:,i-1)'*X;
wR(:,i)=wR(:,i-1)+K*e1; %i时刻权值 y(i)=wR(:,i)'*X; e(i)=x(i)-y(i);
T=(T-K*X'*T)/namuta; %i时刻的维纳解 end;
a1R=-wR(1,1:n); a2R=-wR(2,1:n); %画图
subplot(2,1,1);
plot(1:n,a1L,'r-',1:n,a1R,'g-',1:n,a1,'k-'); title('LMS与RLS算法a1权系数收敛过程对比'); subplot(2,1,2);
plot(1:n,a2L,'r-',1:n,a2R,'g-',1:n,a2,'k-'); title('LMS与RLS算法a2权系数收敛过程对比');
13 / 15
图4:LMS与RLS仿真图形对比
结果分析:
1. RLS算法在算法的稳态阶段算法相差不明显
即算法的后期收敛阶段
其性能和LMS
但在算法的前期收敛段
RLS算法的收敛速度要明计算量比较大。
显高于LMS算法。但是RLS算法复杂度高
RLS算法与LMS对比:
由于LMS算法只是用以前各时刻的抽头参量等作该时刻数据块估计时的平方误差均方最小的准则,而未用现时刻的抽头参量等来对以往各时刻的数据块作重新估计后的累计平方误差最小的准则,所以LMS算法对非平稳信号的适应性差。RLS算法的基本思想是力图使在每个时刻对
14 / 15
所有已输入信号而言重估的平方误差的加权和最小,这使得RLS算法对非平稳信号的适应性要好。与LMS算法相比,RLS算法采用时间平均,因此,所得出的最优滤波器依赖于用于计算平均值的样本数,而LMS算法是基于集平均而设计的,因此稳定环境下LMS算法在不同计算条件下的结果是一致的。在性能方面,RLS的收敛速率比LMS要快得多,因此,RLS在收敛速率方面有很大优势。
图6分别为RLS算法和LMS算法在处理过程中的误差曲线,它指出了在迭代过程中的误差减少过程。由图可见,RLS算法在迭代过程中产生的误差明显小于LMS算法。由此可见,RLS在提取信号时,收敛速度快,估计精度高而且稳定性好,可以明显抑制振动加速度收敛过程,故对非平稳信号的适应性强,而LMS算法收敛速度慢,估计精度低而且权系数估计值因瞬时梯度估计围绕精确值波动较大,权噪声大,不稳定。
结束语:这一次的大作业通过查找资料、向同学请教,基本上弄明白
的自适应滤波两种算法的原理,在编写程序过程中参考了许多前辈们的经典写法,然后自己完成了程序的编写。通过这次仿真作业,我看到了自己在算法实现上和优秀的程序员还有很大的差距,自己还有很长的路要走。以后要多动手更加努力,才能使自己的编程水平得到提高。
参考文献:
[1] 张玲华 郑宝玉. 随机信号处理 清华大学出版社
15 / 15