自适应滤波LMS与RLS地matlab实现.pdf

上传人:tbuqq 文档编号:5491467 上传时间:2020-05-23 格式:PDF 页数:16 大小:1.51MB
返回 下载 相关 举报
自适应滤波LMS与RLS地matlab实现.pdf_第1页
第1页 / 共16页
自适应滤波LMS与RLS地matlab实现.pdf_第2页
第2页 / 共16页
自适应滤波LMS与RLS地matlab实现.pdf_第3页
第3页 / 共16页
自适应滤波LMS与RLS地matlab实现.pdf_第4页
第4页 / 共16页
自适应滤波LMS与RLS地matlab实现.pdf_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《自适应滤波LMS与RLS地matlab实现.pdf》由会员分享,可在线阅读,更多相关《自适应滤波LMS与RLS地matlab实现.pdf(16页珍藏版)》请在三一文库上搜索。

1、实用标准文案 文档大全 MATLAB仿真实现LMS 和 RLS 算法的二阶AR 模型 及仿真结果分析 一、题目概述:二阶 AR 模型如图1a所示,可以如下差分方程表示: )()()2()1()()( 21 ndnvnxanxanvnx(1) 图 1a 其中,v(n) 是均值为0、方差 为0.965 的高斯白噪声序列。,为描述性参数, .95, 0,195.0 21 aa设 x(-1)=x(-2)=0 ,权值,=0.04推导最优 滤波权值(理论分析一下)。按此参数设置,由计算机仿真模拟权值收敛曲线并画出,改 变步长在此模拟权值变化规律。对仿真结果进行说明。应用 RLS算法再次模拟最优滤波 权值。

2、 解答思路: (1)高斯白噪声用normrnd 函数产生均值为0、方差为0.965 的正态分布随机1*N 矩 阵来实现。随后的产生的信号用题目中的二阶AR 模型根据公式(1)产生,激励源是之前 产生的高斯白噪声。 (2)信号长度N 取为 2000 点,用以观察滤波器权值变化从而估计滤波器系数,得到 其收敛值。 (3)仿真时分别仿真了单次LMS 算法和 RLS 算法下的收敛性能以及100 次取平均后 的 LMS和 RLS算法的收敛性能,以便更好的比较观察二者的特性。 ( 4) 在 用 不 同 的 分 别 取3 个 不 同 的值 仿 真LMS算 法 时 ,值 分 别 取 为 实用标准文案 文档大全

3、 0.001,0.003,0.006; 用 3 个不同的 值仿真 RLS 算法时 值分别取为1,0.98,0.94, 从而分析不同步长因子、不同遗忘因子对相应算法收敛效果的影响。 二、算法简介 1自适应算法的基本原理 自适应算法的基本信号关系如下图所示: 自适应算法 参数可调数字滤波器 x(n) d(n) y(n) e(n) - + 图 1b 自适应滤波器框图 输入信号x(n)通过参数可调的数字滤波器后产生输出信号y(n),将其与参考信号d(n) 进行比较, 形成误差信号e(n)。e(n)通过某种自适应算法对滤波器参数进行调整,最终是 e(n) 的均方值最小。当误差信号e(n)的均方误差达到最

4、小的时候,可以证明信号y(n)是信号 d(n) 的最佳估计。 2. LMS 算法简介 LMS 算法采用平方误差最小的原则代替最小均方误差最小的原则,信号基本关系如下: 1 0 ( )( ) () ( )( )( ) (1)( )2( ) () (0,1,2,1) N i ii y nw n x ni e nd ny n w nw ne n x ni iN (2) 写成矩阵型式为: ( )( )( ) ( )( )( ) (1)( )2( )( ) T y nWn X n e nd ny n W nW ne n X n (3) 式 ( 3) 中,W(n) 为 n 时刻自适应滤波器的权值, 011

5、 ( )( ),( ),( ) T N W nwnw nwn, N 为自适应滤波器的阶数,本设计中取为2000;X( n) 为 n 时刻自适应滤波器的参考输入 矢量,由最近N 个信号采样值构成,( ) ( ), (1), (1) T X nx nx nx nN;d ( n) 是期 望的输出值; e ( n) 为自适应滤波器的输出误差调节信号(简称失调信号 ) ;是控制自适应 速度与稳定性的增益常数,又叫收敛因子或步长因子。 实用标准文案 文档大全 3 RLS 算法简介 RLS 算法是用二乘方的时间平均的最小化准则取代最小均方准则,并按时间进行迭代 计算。其基本原理如下所示: :遗忘因子,它是小

6、于等于1 的正数。 :d n参考信号,也可称为期望信号。 ( ) :nw第 n 次迭代的权值。 :n均方误差。 RLS 算法的准则为: 2 0 min n n k k nek(4) 上式越旧的数据对n的影响越小。通过计算推导得到系数的迭代方程为: (5) 式(5)中,增量k(n)和误差计算公式如下: (n1)x(n) k(n) (n)T(n1)x(n) T T x (6) (7) 式( 6)中 T(n)= ,也就是当前时刻自相关矩阵的逆。 (n)T按如下方式更新: (n)T = (n1)T-k(n)*x(n) T * (n1)T )/(8) 由上边分析可知,RLS 算法递推的步骤如下: 1.在

7、时刻 n,(1),(1)nnwT和( ), ( )d nnx也已经存储在滤波器的相应器件中 2.利用公式( 5) 、 (6) 、 (7)和( 8)计算 T(n)、w(n)、k(n)、,并得到滤波器的 输出相应( )y n和误差( )e n即: ( )( ) ( ) T y nnnwx(9) ( )( )( )e nd ny n(10) 3.进入第1n次迭代 这样做的优点是收敛速度快,而且适用于非平稳信号的自适应处理 缺点是每次迭代时都要知道输入信号和参考信号,计算量比较大 实用标准文案 文档大全 三、仿真过程 仿真过程按照如下过程进行 (1)信号产生:首先产生高斯白噪声序列w(n) ,然后将此

8、通过一个参数为 =-0.195, =0.95 简单的二阶自回归滤波器生成信号( )x n。 (2)将 step(1)生成的信号通过LMS 和 RLS 自适应滤波器进行处理 (3)通过改变值对收敛速度的影响来分析LMS 算法的性能以及通过改变 值 对收敛速度的影响来分析RLS 算法的性能。 (4)绘制相应图形曲线 四、仿真以及结果分析 信号和高斯白噪声波形如图2 所示: 图 2 信号和高斯白噪声波形 图 2 中,上边的图形为信号波形,下边的为加性高斯白噪声。 实用标准文案 文档大全 图 3(a)LMS 算法下单次收敛曲线 图 3(b) LMS 算法下百次平均收敛曲线 分析 1: 实用标准文案 文

9、档大全 图 3 中,a、b 两幅图分别为单次实现的LMS 算法下最优权值变化过程和100 次仿真实 现后取平均值做的图,两个权值初始值由已知条件设置为0,之后收敛到两个定值。 a图展现了滤波器权系数迭代更新的过程,可以发现其并不是平滑的变化,而是随机起 伏的,跟最陡下降法不一样,这充分说明了其权向量是一个随机过程向量,梯度噪声对其产 生了一定的影响。 b图 给 出 了100次 独 立 实 验 得 到 的 平 均 权 向 量?(n)E w的 估 计 , 即 1 1 ?(n)(n) T t t ww T ,其中? (n) t w是第 t 次独立实验中第n 次迭代得到的权向量,T 是独立实 验次数。

10、 可以发现, 多次独立实验得到的平均权向量?(n)E w的估计平滑了随机梯度引入的 梯度噪声,十分接近理论最优权向量 0.195,0.95T opt w, 曲线足够平滑, 噪声影响很小。 图 3 中 a、b 两图皆有较好的收敛特性,即使1 次实现也能很好的逼近最优权值。 图 4(a)RLS 算法下单次收敛曲线 实用标准文案 文档大全 图 4(b)RLS 算法下百次平均收敛曲线 分析 2: 图 4 中, a、b 两幅图分别为单次实现的RLS 算法下最优权值变化过程和100 次仿真实 现后取平均值做的图,a图中可看出权值已有较好收敛特性,两个权值初始值由已知条件设 置为0,之后收敛到两个定值:-a

11、1=0.195 和-a2=-0.95, ,但是曲线不够平滑、噪声较大,b 图经过取平均后噪声影响已经很小。单次实现和多次实现的联系与区别也与LMS 算法基本 相同。 但是可以清晰地看出RLS 算法收敛极。将两种算法整合于一个图中可以看出鲜明的对 比。 实用标准文案 文档大全 图 5 LMS 算法和 RLS 算法收敛曲线对比 分析 3: 从图 5 可以看出,在和一定的情况下,RLS 比 LMS 具有更快的收敛速度。在算法的前期 收敛段, RLS 算法的收敛速度要明显高于LMS 算法。 总的来说, LMS 算法的收敛性和步长有关,受协方差矩阵的特征根影响,然而RLS 算 法一定是收敛的,且收敛速度

12、很快,不过其迭代过程由于要求增益因子和逆矩阵等,使得其 算法复杂度高,计算量比较大。 接下来修改步长值,观察曲线的收敛情况。图6 给出了 =0.01, =0.03 和=0.06 三种情况下的最优权值变化曲线,由此分析不同步长对曲线收敛性产生的影响。 实用标准文案 文档大全 图 6 对 LMS 收敛速度的影响 分析 4: 可以看出 LMS 算法中的步长参数决定抽头权向量在每步迭代中的更新量,是影响算 法收敛速度的关键参数,其决定了LMS 算法学习过程的快慢。 图 6 展示了当收敛步长值变小时, 其均方误差的收敛速度也相应减慢,降低对实变系 统的跟踪速度,不能及时调整至最优权值。 由前面的理论推导

13、我们可以知道 1 0 max() ,在这个范围内, 越大,均方误差 收敛速度越快, 收敛速度和步长因子成正比。可是如果 大于这个范围会造成不稳定,较大 步长会造成较大的稳态误差,带来算法的发散。 实用标准文案 文档大全 图 7 对 RLS 收敛速度的影响 分析 5: RLS 算法中遗忘因子的作用是对离n 时刻越近的误差加比较大的权重,而对离n 时 刻越远的误差加比较小的比重。遗忘因子的选择对RLS 算法的性能起决定性的作用。是 个小于等于1 的数, 如果 越小, 能量信号就越接近最新的误差平方,对前面的误差遗忘的 越快,跟踪效果就越好。但是,递推RLS 算法中的误差是由期望信号决定的,如果很小

14、 则误差信号对期望信号的依赖性就会很大,所以,输出信号就很接近期望信号。 从图 7 可以看出,遗忘因子越小,系统的跟踪能力越强,收敛的越快(即变平稳得 越快) ,但是收敛值比较大;越大,系统跟踪能力减弱,收敛时均方误差也越小,学习曲 线收敛值越小。所以,我们在用普通递推RLS 算法时,一定要对有个准确的取值,才能 保证系统性能的最佳状态。 总结: LMS 算法其优点是结构简单,算法复杂度低,易于实现,稳定性高,便于硬件实现,但是这 种算法收敛速度慢,对快速变化的信号不适合。RLS 算法是基于最小二乘准则的精确方法, 它的收敛速度快,稳定性强,因此常被应用于实时系统识别和快速启动的信道均衡。 实

15、用标准文案 文档大全 附件(程序代码): %(1)信号序列与高斯白噪声的产生 % 参数初始化 a1=-0.195; % 生成信号所用 AR (2)滤波器的参数 a2=0.95; N=2000; % 信号长度 % 信号及白噪声信号序列的初始化 x=zeros(1,N); % 信号的初始化 sigmasqu=0.0965; % 噪声方差 sigma=sqrt(sigmasqu);% 噪声标准差 w=normrnd(0,sigma,N); % 高斯白噪声的初始化,均值为0,方差为 0.0965 x(1)=w(1); % 信号前两点的初始赋值 x(2)=-a1*x(1)+w(2); % 信号序列的产生

16、 for i=3:N x(i)=-a1*x(i-1)-a2*x(i-2)+w(i);% 信号由 AR (2)产生 end % 绘制信号和高斯白噪声波形 figure(1) subplot(2,1,1), plot(1:N,x,b-) axis(0,2000,-5,5) title( 基于AR (2)模型产生的信号 x ); xlabel( 信号长度 n ); ylabel(x(n); subplot(2,1,2), plot(1:N,w,r-); axis(0,2000,-5,5) title( 基于AR (2)模型产生的高斯白噪声 w(n) ); xlabel( 信号长度 n ); ylab

17、el(w(n); %-LMS100次叠 加% % N=2000; 实用标准文案 文档大全 M=100;% 计算的次数 w1=zeros(N,M);w2=zeros(N,M);I1=eye(2);E1=zeros(N,M); wa1=zeros(N,1);wa2=zeros(N,1);en=zeros(N,1); for k=1:M e=zeros(1,N);% 定义误差向量 % 根据RLS 算法进行递推 x=zeros(1,N); % 信号的初始化 sigmasqu=0.0965;% 噪声方差 sigma=sqrt(sigmasqu);% 噪声标准差 w=normrnd(0,sigma,N);

18、 % 高斯白噪声的初始化,均值为0,方差为 0.0965 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);% 信号由 AR (2)产生 end L=2; % 滤波器长度 u=0.04; %LMS 算法下自适应增益常数初始化 wL=zeros(L,N);%LMS滤波器的权值初始化 for i=(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

19、+1)=wL(:,i)+2*u*e(i)*X; %i时刻滤波器的权值 end; % a1R=wR(1,1:n); % a1在RLS 算法下值的变化 % a2R=wR(2,1:n); % a2在RLS 算法下值的变化 w1(:,k)=wL(1,1:N); w2(:,k)=wL(2,1:N);% 将每次计算得到的权矢 量值储存 E1(:,k)=e(:,1);% 将每次计算得到的误差储存 % 求权矢量和误差的 M 次的平均值 wa1(:,1)=wa1(:,1)+w1(:,k); wa2(:,1)=wa2(:,1)+w2(:,k); en(:,1)=en(:,1)+E1(:,k); 实用标准文案 文档

20、大全 end %-止LMS100 次叠 加% % %绘制LMS 算法下 a1、a2单次及 100次平均收敛曲线 figure(2) plot(1:N,w1(1:N,M),r-,1:N,w2(1:N,M),b-,1:N,-a2,k-,1:N,-a1, k- ); legend( LMS-W1 变化 , LMS-W2 变化 , W1收敛值 , W2收敛值 ,0); % 图例 title(LMS单次实现的权值收敛曲线 ); xlabel( 信号长度 n ); ylabel( 权值W); figure(3) plot(1:N,wa1(1:N,1)./M,r-,1:N,wa2(1:N,1)./M,b-,

21、1:N,-a2,k-,1:N ,-a1, k-); % 作出 100次计算权矢量的平均变化曲线 xlabel(N );ylabel(W(N) );title(LMS算法下 100次仿真 W1(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); for k=1:M e=zeros(1,N);% 定义误差向量 % 根据RL

22、S 算法进行递推 x=zeros(1,N); % 信号的初始化 sigmasqu=0.0965;% 噪声方差 sigma=sqrt(sigmasqu);% 噪声标准差 w=normrnd(0,sigma,N); % 高斯白噪声的初始化,均值为0,方差为 0.0965 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);% 信号由 AR (2)产生 end L=2; % 滤波器长度 lam=0.98; %RLS 算法下 lambda取值

23、 wR=zeros(L,N);% 权系数,初值为 0 T=eye(L,L)*10;% %RLS 算法下 T参数的初始化 ,T 初始值为 10 for i=(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; w3(:,k)=wR(1,:); w4(:,k)=wR(2,:);% 将每次计算得到

24、的权矢量值 储存 E2(:,k)=e(:,1);% 将每次计算得到的误差储存 % 求权矢量和误差的 M 次的平均值 wa3(:,1)=wa3(:,1)+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),r-,1:N,w4(1:N,M),b-,1:N,-a2,k-,1:N,-a1, k- ); legend( RLS-W1变化 , RLS-W2 变化 , W1收敛值 , W2收敛值 ,0); % 图例 title(RLS

25、单次实现权值收敛曲线 ); xlabel( 信号长度 n ); ylabel( 权值W); figure(5) plot(1:N,wa3(1:N,1)./M,r-,1:N,wa4(1:N,1)./M,b-,1:N,-a2,k-,1:N ,-a1, k-); % 作出 100次计算权矢量的平均变化曲线 xlabel(N );ylabel(W(N) );title(RLS算法下 100次仿真 W1(n)和W2(n)的平 均变化曲线线 ) 实用标准文案 文档大全 % 绘制LMS 与RLS 算法下 a1、a2收敛曲线 figure(6) plot(1:N,w1(1:N,1),r-.,1:N,w2(1:

26、N,1),b:,1:N,w3(1:N,1),g-,1 :N,w4(1:N,1),m- ,1:N,-a2,k-,1:N,-a1,k-); legend( LMS-W1 变化 , LMS-W2 变化 , RLS-W1变化 , RLS-W2变化 , W1收敛值 , W2收敛值 ,0); % 图例 title(LMS与RLS 算法单次实现的对比 ); xlabel( 信号长度 n ); ylabel( 权值W); %(3)LMS 算法下不同 u值的参数收敛曲线 wL=zeros(L,N,3); eL=zeros(N,3); % LMS 算法下误差初始化 yL=zeros(N,3); % LMS 算法下

27、滤波器输出初始化 u=0.01,0.03,0.06; % 不同的 u值 for j=1:3 for i=(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); a2L1=wL(2,1:N,1); a2L2=wL(2,1:N,2); a2L3=wL(2,1:N,3); figure(7)

28、 plot(1:N,a1L1,b-,1:N,a1L2,r:,1:N,a1L3,g-.,1:N,-a1,k ,1:N,a2L1 , b-,1:N,a2L2, r:,1:N,a2L3, g-.,1:N,-a2,k ) % 画图显示不同 u值下 LMS 算法性能差别 legend( u=0.01, u=0.03, u=0.06, W收敛值 ,0) % 图例 title(LMS算法下不同的 u值对W 收敛速度影响 ) xlabel( 信号长度 n ) ylabel( 权值W) %(4)RLS 算法下不同 lambda值的参数收敛曲线 wR=zeros(2,N,3); % RLS 算法下自适应滤波器参数

29、初始化 eR=zeros(N,3); % RLS 算法下误差项初始化 yR=zeros(N,3); % RLS 算法下滤波器输出初始化 lam=1,0.98,0.94; 实用标准文案 文档大全 for j=1:3 for i=(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); a1R

30、2=wR(1,1:N,2); a1R3=wR(1,1:N,3); a2R1=wR(2,1:N,1); a2R2=wR(2,1:N,2); a2R3=wR(2,1:N,3); figure(8) plot(1:N,a1R1,b-,1:N,a1R2, r:,1:N,a1R3, g-.,1:N,-a1,k ,1:N,a2R1 , b-,1:N,a2R2, r:,1:N,a2R3, g-.,1:N,-a2,k ) % 画图显示不同 lamda值下RLS 算法性能差别 legend( lam=1 , lam=0.98, lam=0.94, W收敛值 ,0) title(RLS算法下不同的 lam值对W 收敛速度影响 ) xlabel( 信号长度 n ) ylabel( 权值W)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1