基于某MATLAB地ADSP AR2模型地LMS 与 RLS 算法分析报告Word格式文档下载.docx
《基于某MATLAB地ADSP AR2模型地LMS 与 RLS 算法分析报告Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《基于某MATLAB地ADSP AR2模型地LMS 与 RLS 算法分析报告Word格式文档下载.docx(11页珍藏版)》请在冰豆网上搜索。
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):
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:
%a2在LMS算法下值的变化
%RLS滤波
lam=0.98;
%RLS算法下lambda取值
wR=zeros(L,n);
%权系数,初值为0
T=eye(L,L)*10;
%%RLS算法下T参数的初始化,T初始值为10
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)'
%输出信号
%预测误差
T=(T-K*X'
*T)/lam;
%i时刻的维纳解
a1R=wR(1,1:
%a1在RLS算法下值的变化
a2R=wR(2,1:
%a2在RLS算法下值的变化
%绘制LMS与RLS算法下a1、a2收敛曲线
figure
(2)
n,a1L,'
n,a1R,'
n,a2L,'
g--'
n,a2R,'
m-.'
n,a2,'
k-'
n,a1,'
LMS-a1变化'
RLS-a1变化'
LMS-a2变化'
RLS-a2变化'
a1收敛值'
a2收敛值'
0);
%图例
LMS与RLS算法对比'
对应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):
yL(i,j)=x(i-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:
i-L);
end
a1L1=wL(1,1:
n,1);
a1L2=wL(1,1:
n,2);
a1L3=wL(1,1:
n,3);
figure(3)
n,a1L1,'
b-'
n,a1L2,'
r:
n,a1L3,'
c-.'
,1:
k'
)%画图显示不同u值下LMS算法性能差别
u=0.001'
u=0.003'
u=0.006'
0)%图例
LMS算法下不同的u值对a1收敛速度影响'
)
信号点数n'
对应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];
xR=x(i-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,j)=wR(1:
2,i-1,j)+k*eR;
a1R1=wR(1,1:
a1R2=wR(1,1:
a1R3=wR(1,1:
figure(4)
n,a1R1,'
n,a1R2,'
n,a1R3,'
n,1:
)%画图显示不同lamda值下RLS算法性能差别
lam=1'
lam=0.98'
lam=0.94'
RLS算法下不同的lam值对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时看出收敛后是几乎没有噪声的,因为有效记忆长度此时为无穷大。