自适应滤波LMS与RLS的matlab实现docx.docx
《自适应滤波LMS与RLS的matlab实现docx.docx》由会员分享,可在线阅读,更多相关《自适应滤波LMS与RLS的matlab实现docx.docx(19页珍藏版)》请在冰豆网上搜索。
自适应滤波LMS与RLS的matlab实现docx
MATLAB仿真实现LMS和RLS算法的二阶AR模型
及仿真结果分析
一、题目概述:
二阶AR模型如图la所示,可以如下差分方程表示:
x(n)=k(/7)-atx{n-1)-电坯刀-2)=v(n)+d(n)
(1)
X(n).X(n-l)X(n-2)
X(n)
图la
其中,v(n)是均值为0、方差为0.965的高斯白噪声序列。
心,a?
为描述性参数,
=-0.195,a2=0,95.设x(-l>x(-2)=0,权值Wi(O)=w2(0)=0,卩=004①推导最优滤波权值(理论分析-下)。
②按此参数设置,由计算机仿真模拟权值收敛曲线并画出,改变步长在此模拟权値变化规律。
③对仿真结果进行说明。
④应用RLS算法再次模拟最优滤波权值。
解答思路:
(1)高斯白噪声用normmd函数产生均值为0、方差为0965的正态分布随机1*N矩阵來实现。
随后的产生的信号用题目中的二阶AR模型根据公式
(1)产生,激励源是之前产生的高斯白噪声。
(2)信号长度N収为2000点,用以观察滤波器权值变化从而估计滤波器系数,得到其收敛值。
(3)仿真时分别仿真了单次LMS算法和RLS算法卜•的收敛性能以及100次取平均后的LMS和RLS算法的收敛性能,以便更好的比较观察二者的特性。
(4)在用不同的分别取3个不同的卩值仿真LMS算法时,卩值分别取为
O.ODlr0.003,0.006:
用3个不同的入值仿真RLS算法时入值分别取为1,0.58,0.94,从而分析不同步长因子、不同遗忘因子对柑应算法收敛效果的影响。
二、算法简介
1.自适应算法的基本原理
自适应算法的基本信号关系如卜图所示:
图1b自适应滤波器框图
输入信号x(n)通过参数可调的数字滤波器后产生输出信号y(n),将其与参考信号•d(n)
进行比较,形成谋差信y-e(n)oe(n)通过某种自适应算法对滤波器参数进行调整,最终是e(n)
的均方值最小。
当谋差信号e(n)的均方谋差达到最小的时候,可以证明信号y(n)是信号・d(n)的最佳估计。
2LMS算法简介
LMS算法采用平方误差最小的原则代替垠小均方误差敲小的原则,信号基本关系如2
N-1
y(n)=》W(n)x(n-i)
o
e(n)=d(n)-y(n)
(2)
W(n+1)=州(n)+2/ze(n)x(n一i)
i=(O丄2,….N—l)
写成矩阵型式为:
y(n)=WT(n)X(n)
e(n)=ci(n)-y(n)(3)
W(n+1)=W(n)+2/ze(n)X(n)
式(3)中,W(n)为n时刻自适应滤波器的权值,W(n)=[%(n),州(n),....v^T(n)]T,
N为自适应滤波器的阶数,本设计中取为2000:
X(n)为n时刻自适应滤波器的参考输入
矢量,由锻近N个信号釆样值构成,X(n)=[x(n),x(n-l),....x(n-N+l)]T:
d(n)是期
望的输出值;c(n)为自适血濾波器的输出谋差调节信号(简称失调借号);M足控制自适应
速度与稳定性的增益常数,又叫收敛因子或步长因子。
3.RLS算法简介
RLS算法是用二乘方的时间平均的最小化准则取代最小均方准则,并按时间进行迭代计算。
其基本原理如卞所示:
久:
遗忘因子,它是小于等于1的正数。
d(n):
参考信号,也可称为期望信号。
w(n):
第门次迭代的权值。
£(a):
均方误差。
RLS算法的准则为:
w(n)=另炉7云(k)—>min(4)
k=0
上式越旧的数据对w(ll)的影响越小。
通过计算推导得到系数的迭代方程为:
w(n)=w(n一1)+k(n)e*(n)(5)
式(5)中,增量k(n)和误差矿⑴)计算公式如下:
k(n)=T(n-l)x(n)⑹
2+xT(n)T(n-1)x(n)
e\n)=d\n)-xr(n)*w(n-l)(7)
式(6)中T(n>^_1(n),
T(n)按如下方式更新:
也就是当前时刻自相关矩阵的逆。
T(n)=(T(n-1)-k(n)*x(n)T*T(n-1))/2(8)
由上边分析町知,RLS算法递推的步骤如下:
1在时刻n,w(n-l),T(n-l)和d(n),x(n)也已经存储在滤波器的相应器件中
2.利用公式(5)、⑹、(7)和(8)计算T(n)、w(n)、k(n)、"(n),并得到滤波器的输出相应y(n)和误差e(n)即:
y(n)=wT(n)x(n)(9)
e(n)=d(n)-y(n)(10)
3.进入第1】+1次迭代
这样做的优点是收敛速度快,而且适用于非平稳信号的自适应处理
缺点是每次迭代时都要知道输入涪兮和參考信号,计算量比较犬
三、仿真过程
仿真过程按照如卜•过程进行
(1)信号产生:
首先产生高斯白噪声序列w(n),然后将此通过一个参数为a丄二0195,
a2=0.95简单的二阶自回归滤波器生成信4x(n)o
(2)将step
(1)生成的信号通过LMS和RLS自适应滤波器进行处理
(3)通过改变R值对W-W2收敛速度的影响來分析LhlS算法的性能以及通过改变入值对Wi,W2收敛速度的影响来分析RLS算法的性能。
(4)绘制相应图形曲线四、仿真以及结果分析
信号和高斯白噪声波形如图2所示:
图2信号和高斯白噪声波形
图2中,上边的图形为信号波形,下边的为加性高斯白噪声。
LMS单次实现的权值收儉曲线
图3(a)LMS算法卜•单次收敛曲线
LMS算法下100次仿MW1(n)和W2何的平均变化曲线
图3(b)LMS算法下百次平均收敛曲线
分析1:
图3中,a、b两幅图分别为单次实现的LMS算法下最优权值变化过程和100次仿真实现后取平均值做的图,两个权值初始值由己知条件设置为0,之后收敛到两个定值。
a图展现了滤波器权系数迭代更新的过程,町以发现其并不是平滑的变化,而是随机起伏的,跟最陡下降法不一样,这充分说明了其权向量是一个随机过程向量,梯度噪声对其产生了一定的影响。
b图给出了100次独立实验得到的平均权向量E[w(ii)]的估计,即□口
一1丁
W(n)=丄工冈(1,其中冈血)是第t次独立实验中第n次迭代得到的权向最,T是独立实Tt-i
验次数。
可以发现,多次独立实验得到的平均权向量E[w(n)]的估计平滑了随机梯度引入的梯度噪声,十分接近理论最优权向最叫口=[-0.195,0.95「曲线足够平滑,噪声影响很小。
图3中a、b两图皆有较好的收敛特性,即使1次实现也能很好的逼近最优权值。
RLS单次实现权值收敛曲线
图4(a)RLS算法卜•单次收敛曲线
RLS算法T100次仿真W1(n)^W2(n)的平均变化曲线线
图4(b)RLS算法F百次平均收敛曲线
分析2:
图4中,a.b两幅图分别为单次实现的RLS算法下最优权值变化过程和100次仿真实现后取平均值做的图,a图中可看出权值己有较好收敛特性,两个权值初始值由已知条件设置为0,之后收敛到两个定值:
-al=0195利-a2=-0.95,,但是曲线不够平滑、噪声较人,b图经过取平均后噪声影响己经很小。
单次实现和多次实现的联系与区别也与LMS算法基本相同。
但是对以清晰地看出RLS算法收敛极。
将两种算法整合于一个图中町以看出鲜明的对比。
LMS与RLS算法单次实现的对比
图5LMS算法和RLS算法收敛曲线对比
分析3:
从图5町以看出,在“和2—定的情况卜•,RLS比LMS具有更快的收敛速度。
在算法的前期收敛段,RLS算法的收敛速度要明显高于LMS算法<
总的來说,LMS算法的收敛性和步长有关,受协方差矩阵的特征根影响,然而RLS算法一定足收敛的,II收敛速度很快,不过其迭代过程由于要求增益囚子和逆矩卩乍等,使得并算法复杂度高,计算量比较人。
接下來修改步长卩值,观察曲线的收敛情况。
图6给出了卩=001,M=003和卩=0.06三
种情况卜的最优权値变化曲线,由此分析不同步长对曲线收敛性产生的影响。
分析4:
可以看出匚MS算法中的步长参数p决定抽头权向量在每步迭代中的更新量,是影响算法收敛速度的关键参数,其决定fLMS算法学习过程的快慢。
图6展示了当收敛步长p值变小时,其均方误差的收敛速度也相应减慢,降低对实变系统的跟踪速度,不能及时调解至最优权值。
由前面的理论推导我们可以知道OV“V—-—,在这个范闱内,p越人,均方误差收敛
max
(2)
速度越快,收敛速度和步长因子成正比。
町是如果卩人于这个范I韦I会造成不稳定,较人步长会造成较人的稳态误差,帯來算法的发散。
图7入对RLS收敛速度的影响
分析5:
RLS算法中遗忘因子的作用是对离n时刻越近的误差加比较人的权重,而对离n时刻越远的误差加比较小的比重。
遗忘因子的选择对RLS算法的性能起决定性的作用。
%是个小于等于1的数,如果入越小,能最信号就越接近最新的误差平方,对前面的误差遗忘的越快,跟踪效果就越好。
但是,递推RLS算法中的误差是由期塑信号•决定的,如果九很小则误差信号对期望信号的依赖性就会很犬,所以,输出信号就很接近期望信号。
从图7町以看出,遗忘因子入越小,系统的跟踪能力越强,收敛的越快(即变平稳得越快),但是收敛值比较人;入越大,系统跟踪能力减弱,收敛时均方误差也越小,学习曲线收敛值越小。
所以,我们在用普通递推RLS算法时,一定要对入有个准确的取值,才能保证系统性能的故佳状态。
总结:
LMS算法其优点是结构简单,算法复杂度低,易于实现,稳定性高,便于硕件实现,但是这种算法收敛速度慢,对快速变化的信号不适合。
RLS算法是基于最小二乘准则的精确方法,它的收敛速度快,稳定性强,因此常被应用于实时系统识别和快速启动的信道均衡。
附件(程序代码):
%
(1)信号序列与高斯白噪声的产生
%泰数初始化
al=-0.195;%生成信号所用AR
(2)滤波器的参数
a2=0.95;
N-2000;%信号长度%信号及白噪声信号序列的初始化
x-zeros(1,N)';%信号的初始化
sigmasqu=O.0965;%噪声方差
sigma=sqrt(sigmasqu);%噪声标准差w=normrnd(0,sigma,N)z;%高斯白噪声的初始化,均值为0,方差为0.0965
x⑴-w⑴;%信号前两点的初始赋值
x
(2)—al*x(l)+w
(2);
%信号序列的产生
fori=3:
N
x(i)=-al*x(i-1)-a2*x(i-2)+w(i);号由AR
(2)产生
end
%绘制信号和高斯白噪声波形
figure
(1)
subplot(2,1,1),
plot(1:
N,x,'b-z)
axis([0,2000,-5,5])
titleC基于AR
(2)撲型产生的佶号疋);
xlabel(!
信号长度nJ;
ylabel(zx(n)z);
subplot(2,1,2),
plot(1:
N,w,zr-z);
axis([0,2000,-5,5])
titleC基于AR
(2)模型产生的高斯白噪声w(n)O;
xlabelC信号长度nz);
ylabelCw(n)z);
%%%胖%%%%%%%%%%%%%%%%%%—LMS100次叠
加%胖%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
N-2000;
M=100;%计算的次数
wl=zeros(N,M);w2=zeros(N,M);Il=eye⑵;El=zeros(N,M);wal-zeros(N,1);wa2-zeros(N,1);en-zeros(N,1);
e=zeros(1,N)z;%定义误差向量
%根据RLS算法进行递推
x-zeros(1,N)z;%信号的初始化
sigmasqu-O.0965;%噪声方差sigma-sqrt(sigmasqu);%噪声标准差w-normrnd(0,sigma,N)r;%高斯白噪声的初始化,均值为0,方差为0.0965
x⑴=w⑴;%信号前两点的初始赋值
x
(2)—al*x
(1)+w⑵;
%信号序列的产生
fori-3:
N
x(i)—a”x(i-l)-a2・x(i-2)+w(i);*ft号由AR
(2)产生
end
L=2;%滤波器长度
u=0.04;%LMS算法下自适应增益常数初始化
wL-zeros(L,N);%LMS滤波器的权值初始化
fori-(L+l):
N
X-x(i-l:
-l:
(i-L));
y(i)-Xz♦wLC,!
);%i时刻输出信号
e⑴-x(i)-y(i);%i时刻误差信号wL(:
(i+l))=wL(:
i)+2*u*e(i)*X;%i时刻滤波器的权值end;
%alR-wR(l,l:
n);%al在RLS算法下值的变化
%a2R-wR(2,l:
n);%b2在RLS算法下值的变化
wl(:
k)=wL(l,l:
N)z;w2(:
k)«wL(2,1:
N)';博次计算得到的权矢量值储存
E1(:
k)=e(:
1);%将每次计算得到的误差储存
%求权矢量和谋差的M次的平均值
wal(:
1)-wal(:
1)+wl(:
k);wa2(:
1)-wa2(:
1)+w2(:
k);en(:
1)=en(:
1)+E1(:
k);
end
%%%*%%%%%%%%%%%%%%%%%%%%%%%%%—止LMS100次叠
加%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%绘制LMS算法下al.a2单次及100次平均收敛曲线
figure
(2)
plot(1:
N,wl(1:
N,M),,/r-z,1:
N,w2(l:
N,M),,/b—z,1:
N,-a2,'k-z,1:
N,-al,zk-z);
legendCLMS-W1变化zzLMS-W2变化,,51收敛值,,52收敛值,,0);X图例titlefLMS单次实现的权值收敛曲线,);
xlabelC信号长度if);
ylabelC权值的);
figure(3)
plot(1:
N,wal(1:
N,1)・/M,'t-‘,1:
N,wa2(1:
N,1)・/M,'b—',1:
N,-a2,'k-z,1:
N,-al/k-z);%^出100次计算权矢量的平均变化曲线
xlabelCNOjylabelCWOOOjtitleCLMS算法下100次仿真Wl(n)和W2(n)的平均变化曲线々
%%RLS滤波
%%%%%%%%%%%%%%%%%%%%%%%—RLS100次叠
加%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
N-2000;
M-100;%计算的次数
w3-zeros(N,M);w4-zeros(N,M);I2-eye
(2);E2-zeros(N,M);
wa3-zeros(N,1);wa4-zeros(N,1);en2-zeros(N,1);
fork=l:
M
e=zeros(1,N)7;%定义误差向量
%根据RLS算法进行递推
x-zeros(1,N)f;%信号的初始化
sigmasqu=0.0965;%噪声方差sigma=sqrt(sigmasqu);%噪声标准差w=normrnd(0,sigma,N)z;%高斯白噪声的初始化,均值为0,方差为
0.0965
x⑴=w⑴;%佶号前两点的初始赋值
X⑵一8”X⑴+W⑵;
%信号序列的产生
fori=3:
N
x(i)—al*x(i-1)-a2*x(i-2)+w(i);号由AR
(2)产生
end
L-2;%滤波器长度
lam-O.98;%RLS算法下lambda取值
wR-zeros(L,N);%权系数,初值为0
T-eye(L,L)*10;%%RLS算法下T参数的初始化,T初始值为10
fori=(L+l):
N
X=x(i-1:
-1:
(i-L));
K=(T*X)/(lam+Xz・T*X);%i时刻增益值
el-x
(1)-wR(:
i-1)f*X;
wR(:
i)-wR(:
i-l)+K*el;%:
时刻权值
y(D-wR(:
i)z*X;%输出信号
e⑴-x(i)-y(i);%预测谋差
T-(T-K*r♦D/lam;%i时刻的维纳解
end;
w3(:
k)-wR(l,:
)z;w4(:
k)-wR(2,:
)z;絳每次计算得到的权矢量值储存
E2(:
k)-e(:
1);%将每次计算得到的误差储存
%求权矢董和误差的M次的平均值
wa3(:
l)=wa3(:
l)+w3(:
k);wa4(:
1)=wa4(:
1)+w4(:
k);en2(:
1)-en2(:
1)+E2(:
k);
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%—止RLS100次叠
加%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%胖%%%%%%%帰%%%%%胖
figure(4)
plot(1:
N,w3(1:
N,M)Z,Zr-z,1:
N,w4(l:
N»M),/b—z,1:
N,-a2,'k-z,1:
N,-al,zk-z);
legendCRLS-W1变化zzRLS-W2变化z,51收敛值,,52收敛值,,0);X图例titleCRLS单次实现权值收敛曲线J;
xlabelC信号长度if);
ylabel<权值卯);
figure(5)
plot(1:
N,wa3(1:
N,1)・/M,,1:
N,wa4(1:
N,1)./M,,b—z,1:
N,-a2,'k-‘,1:
N
,-al,zk-z);%作出100次计算权矢量的平均变化曲线
xlabelfNO;ylabelfW(10,);titleCRLS算法下100次仿真(n)和W2(n)的平均变化曲线线仃
%绘制LMS与RLS算法下al、&2收敛曲线
figure(6)
plot(l:
N,wl(1:
N,l)z,zr-z,l:
N,w2(1:
N,1)z,zb:
z,1:
N,w3(1:
N,1)z,g—z,1:
N,w4(1:
N,-a2,zk-z,1:
N,-al/k-7);
legendCLMS71变化,,zLMS-W2变化,,'RLS-W1变化,,'RLS-W2变化,,zWl收敛值"2收敛值,,0);%图例
titleCLMS与RLS算法单次实现的对比,);
xlabelC信号长度『);
ylabel('权值卯);
5^3)LMS算法下不同u值的参数收敛曲线
wL-zeros(L,N,3);
eL-zeros(N,3);%LMS算法下谋差初始化
yL-zeros(N,3);%LMS算法下滤波器输出初始化
u=[0.01,0.03,0.06];%不同的u值
forj=l:
3
fori-(L+l):
N
yL(i,j)-x(i-1:
-1:
i-2)'♦wL(1:
L,i-1,j);
eL(i,j)-x(i)-yL(i,j);
wL(1:
L,i,j)-wL(1:
L,i-1,j)+2“(j)“L(i,j)“(i-1:
-1:
i-L);
end
end
alLl=wL(l,l:
N,1);
alL2=wL(l,1:
N,2);
alL3-wL(l,1:
N,3);
a2Ll-wL(2,1:
N,1);
a2L2-wL⑵1:
N,2);
a2L3-wL⑵1:
N,3);
figure(7)
plot(l:
N,alLl,'b-‘,1:
N,alL2,zt:
',1:
N,alL3,zg-^kN,-al,'L,1:
N,a2Ll/b-z,l:
N,a2L2,zr:
/,1:
N,a2L3/g-Sl:
H,-a2/V)%画图显示不同u值下LMS算法性能差别
legendCu-0.OF,zu-0.03z,zu-0.06z,7W收敛值,,0)%图例
titleCLMS算法下不同的u值对W收敛速度形响,)
xlabelC信号长度if)
ylabel<权值卯)
%⑷RLS算法下不同lambda值的参数收敛曲线
wR-zeros(2,N,3);%RLS算法下自适应滤波器参数初始化
eR-zeros(N,3);%RLS算法下谋差项初始化
yR-zeros(N,3);%RLS算法下滤波器输出初始化
lam=[l,0.98,0.94];
forj=l:
3
fori=(L+l):
N
xR-x(i-1:
-1:
i-2);
k-(T・xR)/(lam(j)+xRz^xR);
T・(T-k»xRrT)/lam(j);
eR-x(i)-xRz*wR(1:
2,i-1,j);
yR(i,j)-xRz•wR(1:
2,i-1,j);
wR(1:
2,i,j)=wR(1:
2,i-1,j)+k“R;
end
end
alRl-wR(1,1:
N,1);
alR2-wR(l,l:
N,2);
alR3-wR(l,1:
N,3);
a2Rl-wR(2,1:
N,1);
a2R2=wR(2,1:
N,2);
a2R3=wR⑵1:
N,3);
figure(8)
plot(1:
N,alRl,z1,1:
N,alR2,,r:
z,1:
N,alR3,'g-・',1:
N,-al,'k,,1:
N,