大学DSP作业1LMS去噪.docx
- 文档编号:30331881
- 上传时间:2023-08-13
- 格式:DOCX
- 页数:12
- 大小:118.74KB
大学DSP作业1LMS去噪.docx
《大学DSP作业1LMS去噪.docx》由会员分享,可在线阅读,更多相关《大学DSP作业1LMS去噪.docx(12页珍藏版)》请在冰豆网上搜索。
大学DSP作业1LMS去噪
20XX年复习资料
大
学
复
习
资
料
专业:
班级:
科目老师:
日期:
课程名称_现在数字信号处理及其应用
实验名称LMS滤波器去噪
学院电子信息学院
专业电路与系统
班级电子2班
学号20XXXX20XXXX0XX020XXXX0
学生姓名张栋
指导老师何志伟
摘要:
固定步长LMS算法自适应滤波器在收敛速度与稳态误差之间存在矛盾,变步长LMS的步长因子是变化的,能够灵活的避免这个矛盾,分析两种变步长的LMS算法的自适应滤波器[1]基本原理,先使用MATLAB对其分析进行仿真,表明变步长的LMS算法改善了收敛速度与稳态误差之间的矛盾,具有更快的收敛速度与更小的稳态误差。
关键字:
LMS算法,自适应滤波器,MATLAB
Abstract:
fixedstepLMSalgorithmofadaptivefilterinthecontradictionbetweenconvergencespeedandsteady-stateerror,variablestepsizeLMSsteplengthfactorischange,canbeflexibletoavoidthisconflict,analyzedtwokindsofvariablestepLMSalgorithmisthebasicprincipleofadaptivefilter,usingMATLABsimulationanditsanalysisisfirstshowedthatvariablestepLMSalgorithmimprovestheconvergencespeedandthecontradictionbetweenthesteady-stateerror,andhasfasterconvergencespeedandsmallersteady-stateerror.
Keywords:
LMSalgorithm,adaptivefilter,theMATLAB
一.基础原理
1.LMS算法简介
全称Leastmeansquare算法。
中文是最小均方算法。
感知器和自适应线性元件在历史上几乎是同时提出的,并且两者在对权值的调整的算法非常相似。
它们都是基于纠错学习规则的学习算法。
感知器算法存在如下问题:
不能推广到一般的前向网络中;函数不是线性可分时,得不出任何结果。
而由美国斯坦福大学的Widrow和Hoff在研究自适应理论时提出的LMS算法,由于其容易实现而很快得到了广泛应用,成为自适应滤波的标准算法。
LMS自适应滤波器[2][3]是使滤波器的输出信号与期望响应之间的误差的均方值为最小,因此称为最小均方(LMS)自适应滤波器。
2.基本LMS算法
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)过程;
3.LMS算法的基本原理[8]
LMS算法的基本思想:
调整滤波器自身参数,使滤波器的输出信号与期望输出信号之间的均方误差最小,这样系统输出为有用信号的最佳估计。
LMS算法的结构框图如图2所示。
输入信号x依次经过m-1个延时单元,在n时刻构成了一个信号矢量x(n)。
输入信号矢量为:
x(n)=[xn,xn-1,,,xn-m+1]
加权矢量(即滤波器抽头系数矢量)为:
w(n)=[wn1,wn2,,,wnm]
相应的滤波器的输出为:
y(n)=wi(n)x(n-i+1)=wT(n)x(n)
(1)
y(n)相对于期望信号d(n)的误差为:
e(n)=d(n)-y(n)=d(n)-wT(n)x(n)
(2)
根据最小均方误差(MSE)准则,最佳的滤波器参量Wopt应使得性能函数)均方误差N=E{e2(n)}为最小。
根据x(n)及其过去值x(n-1),x(n-2),x(n-3),……,x(n-m+1)去估计d(n),w(n)的最优估计值Wopt使估计误差的均方值为最小,Wopt满足正则方程:
RxxWopt=Pxd(3)
式中Rxx为输入信号矢量x(n)的自相关函数,Pxd为输入信号矢量x(n)与实际需要信号d(n)的互相关函数。
直接求解该正则方程的运算量很大,尤其是加权矢量参数个数很多时。
LMS算法采用递推收敛到最佳值Wopt的方法来寻求这个最佳的滤波器加权矢量参数Wopt。
LMS算法推导如下:
利用最优化方法中的最速下降法求最佳权系数向量的近似值。
最速下降法,即/下一时刻0权系数向量w(n+1)应该等于/现时刻0权系数向量w(n)加上一个负均方误差梯度-ý(n)的比例项,即:
w(n+1)=w(n)-uLý(n)(4)
u为控制收敛速度与稳定性的常数,称之为收敛因子。
按照近似方法,直接取e2(n)作为均方误差E[e2(n)]的估计值,即:
ý(n)=ý[e2(n)]=2e(n)ý[e(n)](5)
ý[e(n)]=ý[d(n)-wT(n)x(n)]=-x(n)(6)
于是可得:
w(n+1)=w(n)+2Le(n)x(n)(7)
其中,L为步长,所以为方便起见,仿真时递推公式采
用下式:
w(n+1)=w(n)+Le(n)x(n)(8)
收敛条件为:
0
1.LMS算法的编写
function[W,en,yn]=LMSFilter(M,xn,dn,mu,itr)
%LMS(LeastMeanSqure)算法
%输入参数
%M滤波器的阶数(标量)
%xn输入的信号序列(列向量)
%dn所期望的响应的序列(列向量)
%mu收敛因子(步长)(标量)要求大于0,小于xn的相关向量矩阵最大特征值的倒数
%itr迭代次数(标量)默认为xn的长度,M %例如xs为源信号,xv为噪声信号,则xn=xs+xv;dn=xs %输出参数: %W滤波器的权值矩阵,大小为M*itr %en误差序列(itr*1)(列向量) %yn实际输出序列(列向量) %判断输入的参数个数 ifnargin==4 itr=length(xn); elseifnargin==5 ifitr error('迭代次数过小! '); elseif(itr>length(xn)) error('迭代次数过大! '); end end else error('请检查输入参数的个数'); end end %初始化参数 en=zeros(itr,1);%误差序列,en(k)表示第k次迭代时,预期输出与实际输入的误差 W=zeros(M,itr);%每一行代表一个加权参量,每一列代表一次迭代,初始值为0 %求最优时滤波器的输出序列 yn=zeros(size(xn)); %迭代计算 fork=M: 1: itr x=xn(k: -1: k-M+1);%滤波器M个抽头的输入 y=W(: k-1)'*x;%滤波器的输出 en(k)=dn(k)-y;%第k次迭代的误差 %滤波器权值计算的迭代式 W(: k)=W(: k-1)+2*mu*en(k)*x; yn(k)=W(: k)'*x; end 2.算法分析[5] (1)由于滤波器的权系数必须是依据输入序列来更新的,当输入序列未达到X(N)时,由于部分存储器中没有数值或者造成滤波器输出误差只有length- N个,系数更新达不到要求,因此要对输入前的存储器进行赋零初始化。 (2)由于自适应滤波器有一个调整时间,因此序列的长度length必须足够长,至少要大于滤波器的激励时间! 否则滤波器输出都是无效数据,滤波器的设计也没有意义! (3)同等阶数条件下,lms自适应自适应滤波器与维纳滤波器的效果相比,理论上应该自适应滤波器的效果较好,因为它是自适应的,在程序上表现为out的输出在lms算法中是在循环程序内实现的,而维纳滤波器则是经过输入矩阵与系数相卷积实现的,系数是静态的 3.主程序的编写[4] a.信号的截取,噪声的混杂 %现代数字信号处理大作业 %%LMS语音信号去噪 clearall; closeall; clc; [voice,fs,bits]=wavread('zuixuanminzufeng.wav');%读取语音信号 voice_left=voice(: 1);%读取左声道 voice_right=voice(: 2);%读取右声道 voice=voice_left((6*20XXXX^5+701): (6*20XXXX^5+2500));%截取一段语音信号 L=length(voice); time=(0: L-1)/fs;%时间 noise=0.1*randn(L,1);%白噪声信号 v1=filter(1,[11/2],noise); v2=filter([1,-0.8,0.4,-0.2],1,noise); voice_noise=voice+v1;%混合了白噪声的语音信号 voice=voice_noise-v2; figure; subplot(2,1,1); plot(time,voice);%画出得到的语音样本信号 xlabel('时间/s'); ylabel('幅度'); title('语音信号样本'); subplot(2,1,2); plot(time,voice_noise); xlabel('时间/s'); ylabel('幅度'); title('加了高斯白噪声后的语音信号'); %滤波器的阶数 M=20XXXX; %计算得到收敛因子 Rx=xcorr(voice_noise');%计算向量的自相光 R=toeplitz(Rx);%随机序列的自相关阵 V=eig(R);%得到自相关阵的特征值 mu_max=max(V); %mu=rand()*(1/mu_max);%收敛因子 mu=0.6*1e-4; %进行LMS算法去噪 [W,yn,en]=LMSFilter(M,voice_noise,voice,mu); figure; %subplot(2,1,1); plot(yn,'r'); holdon; plot(voice+v2-v1); holdoff legend('经过LMS自适应滤波后输出','预期输出的语音信号'); xlabel('迭代次数'); ylabel('幅度'); title('信号输出'); %% %计算LMS算法的学习曲线 en=(yn-voice-v2+v1).^2; fori=1: L ifi LMS_MSE(i)=en(i); else LMS_MSE(i)=ones(1,i-M+1)*en(i: -1: M); LMS_MSE(i)=LMS_MSE(i)/(i-M+1); end end %subplot(2,1,2); figure; plot(LMS_MSE); xlabel('迭代次数'); ylabel('幅度'); title('LMS自适应输出与预期输出误差');如图一所示 四.实验心得 通过一学期的系统学习与设计,我投入了最大的热情和精力,从构建框架到程序设计,再进行MATLAB[7]仿真,这其中也遇到不少困难与问题,经过同学的帮助与老师不断的细心指导让我完成了这次课程设计。 通过这次课程设计,让我知道了MATLAB的实用性与重要性,也增加了我的动手能力,让我在独立思考中发现问题,解决问题。 通过MATLAB与现代数字信号处理的系统结合,让我更好的领会学习中不能理解的问题,加深自己对课本知识的更好理解,让我充分理解了理论结合于实践的道理,不再死学,做到了最好的活学活用。 这次课设,也让我知道了文献的查找,不再拘泥于见得XX搜索,增进了我的视角,加大了我的知识面。 通过这次课设,感谢老师的指导与督促,让我明白了什么叫学到了真东西,我会在以后的生活与学习中最好的体现这种精神。 [1]邱天爽,魏东兴,唐洪,等.通信中的自适应信号处理[M].北京: 电子工业出版社,20XXXX. [2]邹国良.自适应滤波理论及应用[M].河北: 河北大学出版社,20XXXX. [3]何振亚.自适应信号处理[M].北京: 科学出版社,20XXXX. [4]尹丽丽,吴跃东.基于LMS算法的自适应均衡器的Matlab实现[J].重庆工学院学报,20XXXX,20XXXX(3): 61-62. [5]高鹰,谢胜利.一种变步长LMS自适应滤波算法及分析[J].电子学报,20XXXX,29(8): 20XXXX0XX4-20XXXX0XX0XX. [6]罗军辉,罗勇江,白义臣,等.Matlab7.0在数字信号处理中的应用[M].北京: 机械工业出版社,20XXXX. [7]龚耀寰.自适应滤波[M].2版.北京: 电子工业出版社,20XXXX. [8]何子述,夏威等编著现代数字信号处理及其应用[M]北京: 清华大学穿射,20XXXX.5: 20XXXX9-20XXXX6
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 大学 DSP 作业 LMS