1 引言
自适应滤波器由Widrow B等提出的自适应滤波理论,是在维纳滤波、卡尔曼滤波等线性滤波基础上发展起来的一种最佳滤波方法。由于它具有更强的适应性和更优的滤波性能,从而广泛应用于通信、系统辨识、回波消除、自适应谱线增强、自适应信道均衡、语音线性预测和自适应天线阵等诸多领域[1]。自适应滤波器最大的优点在于不需要知道信号和噪声的统计特性的先验知识就可以实现信号的最佳滤波处理。本文通过一个具体例子和结果论证了自适应滤波器的滤波效果。
2 自适应滤波原理及LMS算法
2.1 自适应滤波原理
自适应滤波原理图[2],如图1所示。
图1自适应滤波原理图
在自适应滤波器中,参数可调的数字滤波器一般为FIR数字滤波器,IIR数字滤波器或格型数字滤波器。自适应滤波分2个过程。第一,输入信号想x(n)通过参数可调的数字滤波器后得输出信号y(n),y(n)与参考信号d(n)进行比较得误差信号e(n);第二,通过一种自适应算法和x(n)和e(n)的值来调节参数可调的数字滤波器的参数,即加权系数,使之达到最佳滤波效果。
2.2 LMS算法及相关参数的选择
LMS算法最核心的思想是用平方误差代替均方误差[2]。因此该算法简化了计算量。在自适应噪音抵消系统中,如自适应滤波器参数选择不当,就达不到应有的滤波效果,而且还可能得到适得其反的效果。因此针对不同的信号和噪声应选择相应的参数 [3]。可见,参数的选择对滤波效果是至关重要的。下面仅以L阶加权自适应横向滤波器为例,推导LMS算法的公式。L阶加权自适应横向滤波器,如图2所示。
3 MATLAB7.0仿真
本例通过设计一个二阶加权系数自适应横向FIR滤波器,对一正弦信号加噪声信号进行滤波[4]。为了实现该功能,得先生成一个标准正弦波信号s(n)和一个随机噪声信号n(n),然后将s(n)与n(n)相加就得到了加噪后的正弦信号x(n),再依照由LMS算法推导出来的公式(5),设计自适应滤波算法,对噪声干扰信号进行滤波,最后得到滤波后的信号e(n),实现程序代码如下:
clear
t=0:1/10000:1-0.0001;%设置迭代次数
s=sin(2*pi*t);%标准正弦信号
n=randn(size(t));%与时间t等长随机信号
x=s+n;%加噪信号
w=[0,0.5];%初始2阶加权系数
u=0.00026;%最佳参数
for i=1:9999;%自适应算法
y(i+1)=n(i:i+1)*w';
e(i+1)=x(i+1)-y(i+1);
w=w+2*u*e(i+1)*n(i:i+1);
end;
%画图程序
figure(1)
subplot(4,1,1)
plot(t,n);
title('Noise signal');xlabel('t');ylabel('n(t)');
subplot(4,1,2)
plot(t,s);
title('Sinusoidal signal');xlabel('t');ylabel('s(t)');
subplot(4,1,3)
plot(t,x);
title('Sinusoidal signal with noise');xlabel('t');ylabel('x(t)');
subplot(4,1,4)
plot(t,e);
title('the result of filtering');xlabel('t');ylabel('e(t)');
图3 µ取0.00026时的滤波效果图
当µ取0.00026时得到的效果较好。前面一段时间较模糊是因为滤波器参数还没有调整到最佳,如图3所示。由图可知当t取0.5时,已经找到了最佳加权系数。
图4 µ取0.000026时的滤波效果图
当µ取0.000026时,滤波结果几乎呈直线,而且线条很粗,说明寻找加权系数的速度太慢了,如图4所示。
图5 µ取0.26时的滤波效果图
当µ取0.26时,结果也是呈直线状,而且线条很细,有的地方还有毛刺,说明系统参数变化太快,系统还没有调整到最佳加权系数,如图5所示。
图6 µ取1时的滤波效果图
当µ取1时,系统输出混乱,如图6所示。
实验结果表明:不同的µ值得到的滤波效果是不同的。通过实验数据观察得出:μ偏大时,自适应时间越短,自适应过程越快, 但它引起的失调也越大,所以导致滤波结果很模糊,输出信号变化较大,当μ大于某个值时, 系统输出混乱;μ偏小时,系统比较稳定,输出信号变化小,失调也小,但自适应过程却相应加长了,因此参数μ的选择应从整个系统要求出发,在满足精度要求的前提下,尽量减少自适应时间。
最后,通过取合适的µ,改变w(n)的初始值,总可以找到最佳的加权系数。本程序中迭代次数为10000。因此,得出结论:当µ一定,迭代次数很大时,加权系数总可以找到最优解。
以下是W(n)初始值变化时的图像。
4 总结
通过这个例子,使我了解了自适应滤波器的工作原理,以及如何使用自适应滤波器去做信号处理的工作。MATLAB在数字信号处理仿真方面有着强大的功能,通过这次实验,再次温习了一些指令的用法。这个实验中还有一个问题是值得注意的,那就是如何寻找µ。FIR 滤波器以其稳定和容易实现严格的线性相位,使信号处理后不产生相位畸变,而在实际中获得广泛的应用[5]。
参考文献
[1]叶华,吴伯修.变步长自适应滤波算法的研究[J]. 电子学报, 1990,18(4):63-69.
[2]姚天任,孙洪.现代数字信号处理[M].武汉:华中科技大学出版社,1999.
[3]吴轶刚,范猛.自适应滤波器参数选择和仿真结果[J].吉林工学院学报,2001,22(2):25-29.
[4]罗军辉等.MATLAB7.0在数字信号处理中的应用[M].北京:机械工业出版社,2005.
[5] 张亚妮.小波视频图像处理技术[J]. 辽宁工程技术大学学报, 2004,23(2): 230-232.