您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > 机械/模具设计 > 基于LMS算法的自适应对消器的MATLAB实现
基于LMS算法的自适应对消器的MATLAB实现1.对消原理假设自适应噪声对消系统的原始输入端用dj表示,dj=sj+n0,n0是要抵消的噪声,并且与s不相关,参考输入端用xj表示,这里xj=n1。n1是与n0相关、与s不相关的噪声信号,系统的输出用z表示,zj=dj−yj,如图1所示。图1自适应对消原理图其中,滤波器的传输函数可以根据某一信号(这里为系统的输出信号)自动调整,假定s,n0,n1是零均值的平稳随机过程zj=dj−yj=sj+n0−yj(1-1)输出信号的均方值E[zj2]=E[(dj−yj)2]=E[(sj+n0−yj)2]=E[sj2]+E[(n0−yj)2]+2E[sj(n0−yj)](1-2)由于s与n0,n1不相关,因此s与yj也不相关,则E[zj2]=E[sj2]+E[(n0−yj)2(1-3)E[sj2]表示信号的功率。由上面的表达式可以看出,要是输出信号只包含有用信号,或者输出信号的均方值最小,就要求E[(n0−yj)2]取得最小值,由(1-1)式推出等价的条件就是要求E[(zj−sj)2]取得最小值,即要求输出信号与有用信号的误差的均方值为最小。2.单个样本的仿真结果图2对消噪声前后的效果图MATLAB源代码如下:%-------------------------------------------------%用LMS算法设计自适应滤波器%应用领域:自适应对消器%参考文献:cfq-自适应数字滤波器(图1-自适应对消原理)%Author:陈飞强%Date:2010-12-08%-------------------------------------------------clearall;clc;delta=1/10000;t=0:delta:1-delta;t=t';%转换成列向量s=sin(2*pi*t);sigma_n0=1;n0=sigma_n0*randn(size(t));x=s+n0;%原始输入端的输入信号,为被噪声污染的正弦信号d=x;%对于自适应对消器,用x作为期望信号n1=n0;%参考输入端的输入信号,为与n0相关的噪声%设计自适应滤波器N=5;%滤波器阶数w=ones(N,1);%初始化滤波器权值u=0.0026;%步长因子y=zeros(length(t),1);fork=N:length(t)y(k)=n1(k-N+1:k)'*w;e(k)=d(k)-y(k);w=w+2*u*e(k).*n1(k-N+1:k);%跟新权值end%图像化仿真效果subplot(211),plot(t,x);title('被噪声污染的正弦信号');subplot(212),plot(t,s,'k',t,e,'g');%对消噪声后,误差信号即为对原始信号的估计legend('原始正弦信号','自适应滤波后的信号');axis([01-11]);title('滤波效果');3.权值及误差样本均值的收敛性由于LMS算法用单个样本误差来代替梯度法的误差均值,即用梯度的估计值代替梯度的精确值,这样算出的权值及误差将是随机变量,但权值的均值将收敛于梯度法算出的最优权值,均方误差也收敛于维纳解。下面做出了100个样本的学习曲线可以观察其收敛情况。图3LMS算法的学习曲线图4LMS算法的学习曲线(局部放大图)从图3和图4可以看出,相对于单个样本计算的误差也即滤波输出,100个样本计算的误差的均值与原始正弦信号更接近,这也验证了LMS算法计算的均方误差收敛于维纳解的理论。图5权值的学习曲线从图5可以看出随着样本数的增加,权值波动越来越小,这也验证了LMS算法计算的权值的均值收敛于最优权值的理论。
本文标题:基于LMS算法的自适应对消器的MATLAB实现
链接地址:https://www.777doc.com/doc-7391497 .html