基于某MATLAB地ADSP AR2模型地LMS 与 RLS 算法分析报告.docx
《基于某MATLAB地ADSP AR2模型地LMS 与 RLS 算法分析报告.docx》由会员分享,可在线阅读,更多相关《基于某MATLAB地ADSP AR2模型地LMS 与 RLS 算法分析报告.docx(11页珍藏版)》请在冰豆网上搜索。
![基于某MATLAB地ADSP AR2模型地LMS 与 RLS 算法分析报告.docx](https://file1.bdocx.com/fileroot1/2022-12/12/3a231171-213e-4f61-8274-0fb2eac43ecf/3a231171-213e-4f61-8274-0fb2eac43ecf1.gif)
基于某MATLAB地ADSPAR2模型地LMS与RLS算法分析报告
MATLAB仿真实现LMS和RLS算法
题目:
序列x(n)有AR
(2)模型产生:
,w(n)是均值为0、方差为1的高斯白噪声序列。
用LMS算法和RLS算法来估计模型参数
。
按照课本第三章63页的要求,仿真实现LMS算法和RLS算法,比较两种算法的权值收敛速度,并对比不同u值对LMS算法以及λ值对RLS算法的影响。
解答:
1数据模型
(1)高斯白噪声用用randn函数产生均值为0、方差为1的标准正态分布随机矩阵来实现。
随后的产生的信号用题目中的AR
(2)模型产生,激励源是之前产生的高斯白噪声。
(2)信号点数这里取为2000,用2000个信号来估计滤波器系数。
(3)分别取3个不同的u、λ值来分析对不同算法对收敛效果的影响。
其中u=[0.001,0.003,0.006],lam=[1,0.98,0.94]。
2算法模型
2.1自适应算法的基本原理
自适应算法的基本信号关系如下图所示:
图1自适应滤波器框图
输入信号x(n)通过参数可调的数字滤波器后产生输出信号y(n),将其与参考信号d(n)进行比较,形成误差信号e(n)。
e(n)通过某种自适应算法对滤波器参数进行调整,最终是e(n)的均方值最小。
当误差信号e(n)的均方误差达到最小的时候,可以证明信号y(n)是信号d(n)的最佳估计。
2.2LMS算法简介
LMS算法采用平方误差最小的原则代替最小均方误差最小的原则,信号基本关系如下:
写成矩阵型式为:
式中,W(n)为n时刻自适应滤波器的权矢量,
,N为自适应滤波器的阶数;X(n)为n时刻自适应滤波器的参考输入矢量,由最近N个信号采样值构成,
;d(n)是期望的输出值;e(n)为自适应滤波器的输出误差调节信号(简称失调信号);μ是控制自适应速度与稳定性的增益常数,又叫收敛因子或步长因子。
2.3RLS算法简介
RLS算法是用二乘方的时间平均的最小化准则取代最小均方准则,并按时间进行迭代计算。
其基本原理如下所示:
称为遗忘因子,它是小于等于1的正数。
参考信号或期望信号。
第n次迭代的权值。
均方误差。
按照如下准则:
即越旧的数据对
的影响越小。
对滤波器系数
求偏导数,并令结果等于零知
整理得到标准方程
定义
标准方程可以化简成形式:
经求解可以得到迭代形式
定义:
,则可知T的迭代方程为
系数的迭代方程为
其中增益
和误差
的定义分别为
由上边分析可知,RLS算法递推的步骤如下:
1.在时刻n,已经知道
和
也已经存储在滤波器的实验部件中
2.利用公式(1.9)、(1.10)、(1.11)和(1.12)计算
,并得到滤波器的输出相应
和误差
即:
3.进入第
次迭代
优点--其优点是收敛速度快,而且适用于非平稳信号的自适应处理
条件--:
是每次迭代时都知道输入信号和参考信号,计算量比较大
3仿真过程简介
仿真过程按照如下过程进行
(1)信号产生:
首先产生高斯白噪声序列w(n),然后将此通过一个简单的二阶自回归
滤波器生成信号
,该滤波器的参数为
(2)将步骤一生成的信号通过LMS和RLS自适应滤波器进行处理
(3)通过改变u值对
收敛速度的影响来分析LMS算法的性能以及通过改变λ值对
收敛速度的影响来分析RLS算法的性能。
(4)绘制各种图形曲线
(5)源代码如下:
%
(1)信号序列与高斯白噪声的产生
%参数初始化
a1=1.4;%生成信号所用AR
(2)滤波器的参数
a2=-0.7;
n=2000;%信号点数
%信号及白噪声信号序列的初始化
x=zeros(1,n)';%信号的初始化
w=randn(1,n)';%高斯白噪声的初始化,均值为0,方差为1
x
(1)=w
(1);%信号前两点的初始赋值
x
(2)=a1*x
(1)+w
(2);
%信号序列的产生
fori=3:
n
x(i)=a1*x(i-1)+a2*x(i-2)+w(i);%信号由AR
(2)产生
end
%绘制信号和高斯白噪声波形
figure
(1)
plot(1:
n,x,'b:
',1:
n,w,'r-');
legend('信号序列','高斯白噪声')%图例
title('基于AR
(2)模型产生的信号x和高斯白噪声w');
xlabel('信号点数n');
ylabel('x(n)/w(n)');
%
(2)LMS和RLS算法下的参数a1、a2的收敛曲线
%LMS滤波
L=2;%滤波器长度
u=0.001;%LMS算法下自适应增益常数初始化
wL=zeros(L,n);%LMS滤波器的权值初始化
fori=(L+1):
n
X=x(i-1:
-1:
(i-L));
y(i)=X'*wL(:
i);%i时刻输出信号
e(i)=x(i)-y(i);%i时刻误差信号
wL(:
(i+1))=wL(:
i)+2*u*e(i)*X;%i时刻滤波器的权值
end;
a1L=wL(1,1:
n);%a1在LMS算法下值的变化
a2L=wL(2,1:
n);%a2在LMS算法下值的变化
%RLS滤波
L=2;%滤波器长度
lam=0.98;%RLS算法下lambda取值
wR=zeros(L,n);%权系数,初值为0
T=eye(L,L)*10;%%RLS算法下T参数的初始化,T初始值为10
fori=(L+1):
n
X=x(i-1:
-1:
(i-L));
K=(T*X)/(lam+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)/lam;%i时刻的维纳解
end;
a1R=wR(1,1:
n);%a1在RLS算法下值的变化
a2R=wR(2,1:
n);%a2在RLS算法下值的变化
%绘制LMS与RLS算法下a1、a2收敛曲线
figure
(2)
plot(1:
n,a1L,'r-',1:
n,a1R,'b:
',1:
n,a2L,'g--',1:
n,a2R,'m-.',1:
n,a2,'k-',1:
n,a1,'k-');
legend('LMS-a1变化','RLS-a1变化','LMS-a2变化','RLS-a2变化','a1收敛值','a2收敛值',0);%图例
title('LMS与RLS算法对比');
xlabel('信号点数n');
ylabel('对应a1、a2的值');
%(3)LMS算法下不同u值的参数收敛曲线
wL=zeros(L,n,3);
eL=zeros(n,3);%LMS算法下误差初始化
yL=zeros(n,3);%LMS算法下滤波器输出初始化
u=[0.001,0.003,0.006];%不同的u值
forj=1:
3
fori=(L+1):
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*u(j)*eL(i,j)*x(i-1:
-1:
i-L);
end
end
a1L1=wL(1,1:
n,1);
a1L2=wL(1,1:
n,2);
a1L3=wL(1,1:
n,3);
figure(3)
plot(1:
n,a1L1,'b-',1:
n,a1L2,'r:
',1:
n,a1L3,'c-.',,1:
n,a1,'k')%画图显示不同u值下LMS算法性能差别
legend('u=0.001','u=0.003','u=0.006','a1收敛值',0)%图例
title('LMS算法下不同的u值对a1收敛速度影响')
xlabel('信号点数n')
ylabel('对应a1的值')
%(4)RLS算法下不同lambda值的参数收敛曲线
wR=zeros(2,n,3);%RLS算法下自适应滤波器参数初始化
eR=zeros(n,3);%RLS算法下误差项初始化
yR=zeros(n,3);%RLS算法下滤波器输出初始化
lam=[1,0.98,0.94];
forj=1:
3
fori=(L+1):
n
xR=x(i-1:
-1:
i-2);
k=(T*xR)/(lam(j)+xR'*T*xR);
T=(T-k*xR'*T)/lam(j);
eR=x(i)-xR'*wR(1:
2,i-1,j);
yR(i,j)=xR'*wR(1:
2,i-1,j);
wR(1:
2,i,j)=wR(1:
2,i-1,j)+k*eR;
end
end
a1R1=wR(1,1:
n,1);
a1R2=wR(1,1:
n,2);
a1R3=wR(1,1:
n,3);
figure(4)
plot(1:
n,a1R1,'b-',1:
n,a1R2,'r:
',1:
n,a1R3,'c-.',1:
n,1:
n,a1,'k')%画图显示不同lamda值下RLS算法性能差别
legend('lam=1','lam=0.98','lam=0.94','a1收敛值',0)%图例
title('RLS算法下不同的lam值对a1收敛速度影响')
xlabel('信号点数n')
ylabel('对应a1的值')
4仿真结果
信号和高斯白噪声波形如图
(1)所示:
图1信号和高斯白噪声波形
图2LMS算法和RLS算法收敛曲线对比
图3u对LMS收敛速度的影响
图4λ对RLS收敛速度的影响
4结果分析
(1)由(图2)可以看到在u和
值相当的情况下,RLS比LMS具有更快的收敛速度,但是RLS权系数收敛后出现了较大的噪声,是因为RLS中有效记忆长度只有49.
(2)由(图3)可知u越小,LMS算法的收敛速度越慢,但权系数收敛后噪声越小。
(3)有(图4)可知
越大,RLS算法的收敛速度越慢,但权系收敛后噪声越小,当
为1时看出收敛后是几乎没有噪声的,因为有效记忆长度此时为无穷大。