matlab大作业。
基于lms算法的自适应滤波。
姓名:任思佳学院:信息学院学号:2011124064时间:2011/11/25
基于lms算法的自适应滤波。
作业要求:能掌握lms算法的基本原理和自适应滤波器的基础知识。这次作业需要用到,最小均方算法,和自适应滤波器原理。
我好好复习了本科教材中的随机过程的基本知识。以及学习了matlab的基本编程知识。
维纳滤波。设计维纳滤波器的过程就是寻求在最小均方误差下滤波器的单位样本响应或传递函数的表达式,其实质是解维纳-霍夫(wiener-hopf)方程——
维纳滤波的实际用途有限。
它需要已知自相关矩阵r和互相关矢量p,这两个量通常是未知的。它包含了矩阵的求逆,非常的耗时。
若信号为非平稳的,则r和p是时变的,导致必需重复计算。维纳滤波器是最佳滤波器,最有准则是最小均方误差准则。但它不是自适应滤波器。
自适应滤波的滤波系数时变。而维纳滤波系数固定。
自适应滤波。
利用前一时刻已获得的滤波器参数,自动地调节现时刻的滤波器参数,实现最优滤波———自适应滤波。
常用的两种准则是mmse(minimum means quare error)准则和ls(least square)准则。
自适应滤波滤波系数时变,而维纳滤波参数恒定。
随机信号的统计特性是未知的,或者信号的统计特性是缓慢的变化着的(非平稳信号),这就促使人们去研究一类特殊的滤波器,这类滤波器具有以下特点:当输入过程的统计特性未知时,或者输入过程的统计特性变化时,能够相应的调整自身的参数,以满足某种准则的要求,由于这类滤波器能变动自身的参数以“适应”输入过程统计特性的估计或变化,因此,就把这类滤波器称为自适应滤波器。
自适应滤波器通常由两部分构成,其一是滤波子系统,根据它所要处理的功能而往往有不同的结构形式。另一是自适应算法部分,用来调整滤波子系统结构的参数,或滤波系数。在自适应调整滤波系数的过程中,有不同的准则和算法。
算法是指调整自适应滤波系数的步骤,以达到在所描述的准则下的误差最小化。自适应滤波器含有两个过程,即自适应过程和滤波过程。
由最陡下降法来引出lms算法。
最陡下降法就是实现搜索最佳值的一种优化技术,它利用梯度信息分析自适应滤波性能和追踪最佳滤波状态。梯度矢量是由均方误差的梯度来定义的,在多维超抛物面上任意一点的梯度矢量是对应于均方误差对滤波系数的。
一阶倒数,由起始点变化到下一点的滤波系数变化量正好是梯度矢量的负数。自适应过程是在梯度矢量的负方向接连的校正滤波系数的,即在误差性能曲面的最陡下降方向移动和逐步校正滤波系数,最终到达均方误差为最小的碗底最小点,获得最佳滤波或准优工作状态。
最陡下降算法不需要知道误差特性曲面的先验知识,其算法就可以收敛到最佳维纳解,且与起始条件无关。但是最陡下降算法的主要限制是它需要准确测得每次迭代的梯度矢量,这妨碍了它的应用。为了减少计算复杂度和缩短自适应收敛时间。
2023年,美国斯坦福大学的widrow等提出了最小均方(lms)算法,这是一种用瞬时值估计梯度矢量的方法。
这就是lms算法的公式。μ是提干给出的。x(k)为输入信号,d(k)为参考信号。
如图所示lms算法的流程图。
lms算法具有简洁和易于实现地特点使它成为许多实时系统的首选算法,lms算法对每组输入和输出抽样大约需2n-1次乘法和2n-1次加法。太多数信号处理器陡适宜进行乘法和累加运算,使直接实现lms算法更具有吸引力。
练习题:通过一个二阶自回归过程来研究实时数据集平均对lms算法的影响,ar模型的差分方程为:v(n)+a1x(n-1)+a2x(n-2)=x(n)
其中a1=0.2;a2=0.7;v(n)是零均值白噪声;该算法的matlab程序如下:
clearclose allclca1=0.2;a2=0.7;u=0.
001;n=1000;g=100;e=zeros(1,n);w1=zeros(1,n+1);w2=zeros(1,n+1);y=zeros(1,n);
ee=zeros(1,n);%每个点的误差平方ep=zeros(1,n);%每个点的误差平方累积。
eq=zeros(1,n);%每个点的100次误差平方均值w11=zeros(1,n+1);%w1权值的累积w22=zeros(1,n+1);%w2权值的累积for g=1:**=randn(1,n);x(1)=v(1);x(2)=x(1)*a1+v(2);for n=3:n
x(n)=a1*x(n-1)+a2*x(n-2)+v(n);endfigure(1)plot(x)
title('输入信号x')for n=3:n
y(n)=w1(n)*x(n-1)+w2(n)*x(n-2);e(n)=x(n)-y(n);
w1(n+1)=w1(n)+2*u*e(n)*x(n-1);w2(n+1)=w2(n)+2*u*e(n)*x(n-2);
ee(n)=e(n)^2;end
w11=w1+w11;w22=w2+w22;ep=ep+ee;endeq=ep/g;w1=w11/g;w2=w22/g;figure(2)subplot(2,1,1)plot(w1)hold onsubplot(2,1,2)plot(w1)hold onsubplot(2,1,1)plot(w2,'r')
title('w1与w2的收敛曲线,u=0.004')hold onsubplot(2,1,2)plot(w2,'r');
title('100次平均后w1与w2的收敛曲线,u=0.004')figure(3)subplot(2,1,1)plot(e)
title('误差曲线(学习曲线)u=0.004')subplot(2,1,2)plot(eq)
title('100次平均误差曲线(学习曲线)u=0.004')
结果:总结:
在此次作业完成过程中,我遇到种种问题,也意识到自己在学习中的薄弱环节。勤动手,多动脑是我总结出来的经验。也应该多谢我的学长,谢谢他们的耐心讲解。
使我对matlab基础知识有了充分的了解。
matlab大作业
matlab语言及应用。周一晚作业廖育州07010559 第一组程序。绘制选用潍柴发动机wd615.50时汽车行驶性能曲线图,ft ua图clear,clc 清除内存变量,清屏 n为发动机的转速。n 1000,1100,1200,1300,1400,1500,1600,1700,1800,1900,...
MATLAB大作业
实验七图像的形态 算。一 实验目的。1.掌握图像的奇异值分解与合成。2.能够利用模板操作实现图像的腐蚀运算3.能够利用模板操作实现图像的膨胀运算4.掌握图像的开 闭运算。二 实验内容。1.读下面的程序,分析该程序要完成什么样的功能。a 1 2 1 2 3 2 1 2 1 u d v svd a nx...
MATLAB大作业
1.设计一个程序,要求用户用键盘输入10次,输入内容可以是数字 英文 汉字 或者其他文字或者符号。如果输入的是数字,则把存入一个数字数组当中 如果输入的是英文的字符,则存入一个英文字符数组当中 如果是其他字符,则存入一个字符串数组中。当10次内容都输入完毕后,先输出英文数组中的内容,然后输出字符串数...