基于MATLAB的最小均方算法(LMS)仿真与
分析
定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析
实验目地:掌握LMS算法的基本原理和算法中矩阵的构造方法,了解自适应波器原理及性能分析的的方法,对教材中理论知识有直观印象。
实验内容:LMS算法的编程仿真。
实验仪器:计算机及MATLAB软件。
实验时间:2010年12月1日。
一、实验原理:
LMS算法是自适应滤波器中常用的一种算法,与维纳算法不同的是,其系统的系数随输入序列而改变。维纳算法中截取输入序列自相关函数的一段构造系统的最佳系数。而LMS算法则是对初始化的滤波器系数依据最小均方误差准则进行不断修正来实现的。因此,理论上讲LMS算法的性能在同等条件下要优于维纳算法,但是LMS算法是在一个初始化值得基础上进行逐步调整得到的,因此,在系统进入稳定之前有一个调整的时间,这个时间受到算法步长因子u的控制,在一定值范围内,增大u会减小调整时间,但超过这个值范围时系统不再收敛,u的最大取值为R的迹。权系数更新公式为:Wi+1=Wi+2ueiXi
依据上述算式,制定LMS滤波器设计实现方法为:
(1) 设计滤波器的初始化权系数W(0)=0,收敛因子u;
(2) 计算输入序列经过滤波器后的实际输出值:out(n)=WT(n)*X(n);
(3) 计算估计误差e(n)=xd(n)-out(n);
(4) 计算n+1阶的滤波器系数Wn+1=Wn+2*u*e(n)*X(n);
(5) 重复(2)--(4)过程;
二、实验程序及程序的分析:
(一)实验程序
length=1024*16; %数长
N=100; %滤波器的阶数
u=0.00001; %步长常数
t=0:2*pi/ (length-1):2*pi;
xd=[sin(2*pi*t)+sin(10*pi*t)]/2; %期望信号
for i=1:100 %假设信号输入以前,系统存储器中的值全为0
xd(i)=0;
end
xnoise=sqrt(0.04)*randn(1, length);
x=xd+xnoise; %叠加噪声的实际输入信号
w=zeros(N,1); %初始化滤波器的权系数
for i=1: length
out(i)= x(i:i+N-1)*w; %输出序列在循环体内部实现,
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
明其自适应特性
e(i)=xd(i)-out(i);
w=w+2*u*e(i)*x(i:i+N-1)'; %权系数更新
end
subplot(4,1,1)
plot(out)
title('滤波器输出')
hold on
subplot(4,1,2)
plot(xd)
title('期望信号')
subplot(4,1,3)
plot(x,'r')
title('输入信号')
subplot(4,1,4)
plot(e,'g')
title('误差变化')
(二)程序分析
(1)由于滤波器的权系数必须是依据输入序列来更新的,当输入序列未达到X(N)时,由于部分存储器中没有数值或者造成滤波器输出误差只有longth- N个,系数更新达不到要求,因此要对输入前的存储器进行赋零初始化。
(2)由于自适应滤波器有一个调整时间,因此序列的长度longth必须足够长,至少要大于滤波器的激励时间!否则滤波器输出都是无效数据,滤波器的设计也没有意义!
(3)同等阶数条件下,lms自适应自适应滤波器与维纳滤波器的效果相比,理论上应该自适应滤波器的效果较好,因为它是自适应的,在程序上表现为out的输出在lms算法中是在循环程序内实现的,而维纳滤波器则是经过输入矩阵与系数相卷积实现的,系数是静态的。
三、实验结果及结果分析:
(1)信号长度length=1024*16, 滤波器的阶数N=100,收敛因子u=0.00001的自适应滤波器仿真结果:
滤波器输出信号
期望信号
输入信号
误差信号的收敛情况
实验结果分析:在本次仿真中,u取值相对较小,因此误差信号收敛速度很慢,同时滤波器输出信号的调整时间也很长。
(2)收敛因子变化对滤波器性能的影响依次取u=0.00001、0.001、0.1考虑系统的性能:
(a)u=0.00001时滤波器输出信号
u=0.00001时误差信号的收敛情况
(b)u=0.001时滤波器输出信号
u=0.001时误差信号的收敛情况
(c)u=0. 1时滤波器输出信号
u=0. 1时误差信号的收敛情况
实验结果分析:u=0.00001时,a组图中误差信号的收敛速度很慢,在整个输入讯列中都未完成调整,因此输出序列的开始部分有一个很长的调整时间。u=0.001时效果得到了明显的改进,误差信号得到迅速的收敛,但输出信号却不如u=0.00001的平滑。当u=0. 1时,系统无法实现收敛,u的最大取值不能超过矩阵R的迹。
(3)阶数对系统效果的影响:
N=20、u=0.001时滤波器输出信号
N=100、u=0.001时滤波器输出信号
实验结果分析:N=20时相对N=100的滤波效果要差,其信号中所含杂波成分较大,与维纳滤波器一样,随着滤波器阶数的提高,滤波器效果会得到改善。
(4)同等条件下维纳算法与LMS算法之间的效比较:N=40、u分别为0.001和0.00001时维纳滤波器和LMS滤波器输出信号
维纳滤波输出
u=0.001时LMS滤波器的输出
u=0.00001时LMS滤波器的输出
实验结果分析:在相同阶数条件下,LMS滤波器可以取得优于维纳滤波器的波形信号,前提条件是必须合理选择收敛因子u,否则,LMS滤波效果反而回避维纳滤波器的效果差!
结论:改善滤波器性能的方法:在满足收敛速度要求的条件下,适当的降低收敛因子,提高滤波器的阶数可以改善滤波器输出波的平滑型,但减小收敛因子可能会在很长一段时间产生一个较大的均方误差,所以收敛速度和滤波效果有一个矛盾,二者必须折衷选择。提高滤波器的阶数也可以改善滤波效果,但需要提高存储空间。
四、实验心得:
通过实验掌握了自适应滤波器总权系数更新的算法实现方法,加深了对自适应滤波器和维纳滤波器之间区别的认识。