资源描述:
《自适应滤波实验报告材料》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、实用标准LMS自适应滤波实验报告姓名:学号:日期:2015.12.2实验内容:利用自适应滤波法研究从宽带信号中提取单频信号的方法。设,是宽带信号,,,,,任选(1)要求提取两个单频信号;(2)设,要求提取单频信号,研究的大小对提取单频信号的影响。1.自适应滤波器原理自适应滤波器理论是现代信号处理技术的重要组成部分,它对复杂信号的处理具有独特的功能。自适应滤波器在信号处理中属于随机信号处理的范畴。在一些信号和噪声特性无法预知或他们是随时间变化的情况下,自适应滤波器通过自适应滤波算法调整滤波器系数,使得滤波器的特性随信号和噪声的变化,以达到最优滤波的效果,解决了固定全系数的维纳滤器和
2、卡尔曼滤波器的不足。(1)自适应横向滤波器所谓自适应滤波,就是利用前一时刻已获得的滤波器参数等结果,自动调节现时刻的滤波器参数,以适应信号和噪声未知或随时间变化的统计特性,从而实现最优滤波。自适应滤波器由两个部分组成:滤波器结构和调节滤波器系数的自适应算法。自适应滤波器的特点是自动调节自身的冲激响应,达到最优滤波,此算法适用于平稳和非平稳随机信号,并且不要求知道信号和噪声的统计特性。一个单输入的横向自适应滤波器的原理框图如图所示:文案大全实用标准实际上这种单输入系统就是一个FIR网络结构,其输出用滤波器单位脉冲响应表示成下式:这里称为滤波器单位脉冲响应,令:用表示,上式可以写成这
3、里也称为滤波器加权系数。用上面公式表示其输出,适用于自适应线性组合器,也适用于FIR滤波器。将上式表示成矩阵形式:式中误差信号表示为(2)最小均方(LMS)算法Widrow等人提出的最小均方算法,是用梯度的估计值代替梯度的精确值,这种算法简单易行,因此获得了广泛的应用。LMS算法的梯度估计值用一条样本曲线进行计算,公式如下:文案大全实用标准因为所以FIR滤波器中的第个权系数的计算公式为2.编程思想在本题目中,要求在受宽带信号干扰的输入信号中分别提取出两个单频信号,因此,可采用KLS自适应滤波方法提取。在仿真中设置如下:(1)单频信号幅度A=2,B=3,相位;(2)调整步长分别设为
4、mu1=0.0001,mu2=0.00001;(3)滤波器阶数M=50;(4)宽带信号设为均值为0,方差为1的白噪声;(5)提取单频信号,设置期望信号为理想信号,即为;(6)提取单频信号,设置期望信号为理想信号,即为;然后,根据LMS算法,更新滤波器系数。3.源代码%自适应滤波LMS算法functionAdaptive_Filter_LMS(f1,Delte)%Delte为f2-f1mu1=0.0001;mu2=0.00001;%步长Ts=0.0001;%采样间隔N=3000;%信号长度M=50;%阶数文案大全实用标准A=2;B=3;f2=f1+Delte;Phi=pi/3;%频
5、率幅度相位设置s=1*randn(1,N);%宽带信号k=1:N;F1=A*cos(2*pi*f1*k*Ts+Phi);F2=B*cos(2*pi*f2*k*Ts);%两单频信号F=F1+F2;X=s+F1+F2;Y1=zeros(1,N);Y2=zeros(1,N);W1=zeros(1,M);W2=zeros(1,M);e1=zeros(1,N);e2=zeros(1,N);%提取信号F1forn=M:Nx=X(n:-1:n-M+1);%滤波器输入值Y1(n)=W1*x';%滤波器输出值e1(n)=F1(n)-Y1(n);%误差值W1=W1+2*mu1.*e1(n).*x;%
6、系数调整end%提取信号F2forn=M:Nx=X(n:-1:n-M+1);%滤波器输入值Y2(n)=W2*x';%滤波器输出值e2(n)=F2(n)-Y2(n);%误差值W2=W2+2*mu2.*e2(n).*x;%系数调整endfigure(1)subplot(4,1,1);plot(F1(1:N));ylim([-22]);title('单频信号波形F1');subplot(4,1,2);plot(F2(1:N));ylim([-33]);title('单频信号波形F2');subplot(4,1,3);plot(F(1:N));title('无噪声两单频信号波形');文案
7、大全实用标准subplot(4,1,4);plot(X(1:N));title('受宽带干扰的输入信号波形');figure(2)subplot(4,1,1);plot(Y1(1:N));title('提取的单频信号波形F1');subplot(4,1,2);plot(e1(1:N));title('提取单频信号波形F1误差');subplot(4,1,3);plot(Y2(1:N));title('提取的单频信号波形F2');subplot(4,1,4);plot(e2(1:N