摘要本文介绍了维纳滤波的原理及其matlab 实现,以案例的形式展示FIR 维纳滤波的特性。
关键字:FIR 维纳滤波 Matlab1.引言滤波技术是信号分析、处理技术的重要分支,无论是信号的获取、传输,还是信号的处理和交换都离不开滤波技术,它对信号安全可靠和有效灵活地传递是至关重要的。
信号分析检测与处理的一个十分重要的内容就是从噪声中提取信号,实现这种功能的有效手段之一是设计一种具有最佳线性过滤特性的滤波器,当伴有噪声的信号通过这种滤波器的时候,它可以将信号尽可能精确地重现或对信号做出尽可能精确的估计,而对所伴随噪声进行最大限度地抑制。
维纳滤波器就是这种滤波器的典型代表之一。
2.维纳滤波概述维纳(Wiener )是用来解决从噪声中提取信号的一种过滤(或滤波)方法。
这种线性滤波问题,可以看做是一种估计问题或一种线性估计问题。
一个线性系统,如果它的单位样本响应为)(n h ,当输入一个随机信号)(n x ,且)()()(n v n s n x +=(1)其中)(n x 表示信号,)(n v )表示噪声,则输出)(n y 为∑-=mm n x m h n y )()()((2)我们希望)(n x 通过线性系统)(n h 后得到的)(n y 尽量接近于)(n s ,因此称)(n y 为)(n s 的估计值,用^)(n s 表示,即^)()(n s n y =(3)则维纳滤波器的输入—输出关系可用下面图1表示。
图1实际上,式(2)所示的卷积形式可以理解为从当前和过去的观察值)(n x ,)1(-n x ,)2(-n x …)(m n x -,…来估计信号的当前值^)(n s 。
因此,用)(n h 进行过滤问题实际上是一种统计估计问题。
一般地,从当前的和过去的观察值)(n x ,)1(-n x ,)2(-n x …估计当前的信号值^)()(n s n y =成为过滤或滤波;从过去的观察值,估计当前的或者将来的信号值)0)(()(^≥+=N N n s n y 称为外推或预测;从过去的观察值,估计过去的信号值)1)(()(^>-=N N n s n y 称为平滑或内插。
因此维纳滤波器又常常被称为最佳线性过滤与预测或线性最优估计。
这里所谓的最佳与最优是以最小均方误差为准则的。
如果我们分别以)(n s 与^)(n s 表示信号的真实值与估计值,而用)(n e 表示他们之间的误差,即)()()(^n s n s n e -=(4)显然)(n e 可能是正值,也可能是负值,并且它是一个随机变量。
因此,用它的均方误差来表达误差是合理的,所谓均方误差最小即它的平方的统计期望最小:min )]([)(2==n E n e ξ (5)采用最小均方误差准则作为最佳过滤准则的原因还在于它的理论分析比较简单,不要求对概率的描述。
3.维纳-霍夫方程的求解为了按(5)式所示的最小均方误差准则来确定维纳滤波器的冲激响应)(n h ,令)(n ξ对)(j h 的导数等于零,即可得m i m Ri h m R ixxxs ∀-=∑,)()()((6)式中,)(m R xs 是)(n s 与)(n x 的互相关函数,)(m R xx 是)(n x 的自相关函数,分别定义为)]()([m n s n x E R xs += )]()([m n x n x E R xx +=式(6)称为维纳滤波器的标准方程或维纳-霍夫(Wiener-Hopf )方程。
如果已知)(m R xs 和)(m R xx ,那么解此方程即可求的维纳滤波器的冲激响应。
式(6)所示标准方程右端的求和范围即i 的取值范围没有具体标明,实际上有三种情况:(1) 有限冲激响应(FIR )维纳滤波器,i 从0到1-N 取得有限个整数值;(2) 非因果无限冲激响应(非因果IIR )维纳滤波器,i 从∞-到∞+取所有整数值; (3) 因果无限冲激响应(因果IIR )维纳滤波器,i 从0到∞+取正整数值。
上述三种情况下标准方程的解法不同,本文只描述FIR 维纳滤波器的求解。
设滤波器冲激响应序列的长度为N ,冲激响应矢量为TN h h h h )]1()....1()0([-=(7)滤波器输入数据矢量为TN n x n x n x n x )]1()...1()([)(+--=(8)则滤波器的输出为)()()()(^n x h h n x n s n y TT ===(9)这样,式(6)所示的维纳-霍夫方程可写成R h P TT=或Rh P =(10)其中)]()([n s n x E P =(11)是)(n s 与)(n x 的互相关函数,它是一个N 维列矢量;R 是)(n x 的自相关函数,是N 阶方阵)]()([n x n x E R T=(12)利用求逆矩阵的方法直接求解式(10),得P R h opt 1-=(13) 这里opt 表示“最佳”,这就是FIR 维纳滤波器的冲激响应。
维纳滤波器的matlab 实现问题描述假设一个点目标在x ,y 平面上绕单位圆做圆周运动,由于外界干扰,其运动轨迹发生了偏移。
其中,x 方向的干扰为均值为0,方差为的高斯噪声;y 方向干扰为均值为0,方差为的高斯噪声。
1) 产生满足要求的x 方向和y 方向随机噪声500个样本; 2) 明确期望信号和观测信号;3) 试设计一FIR 维纳滤波器,确定最佳传递函数:1opt xx xs h R R -=,并用该滤波器处理观测信号,得到其最佳估计。
(注:自行设定误差判定阈值,根据阈值确定滤波器的阶数或传递函数的长度)。
4)分别绘制出x方向和y方向的期望信号、噪声信号、观测信号、滤波后信号、最小均方误差信号的曲线图;5)在同一幅图中绘制出期望信号、观测信号和滤波后点目标的运动轨迹。
4.2Matlab仿真及运行结果用Matlab实现FIR滤波器,并将先前随机产生的500个样本输入,得到最佳估计。
具体程序如下:clear;clf;sita=0:pi/:2*pi;xnoise=sqrt*randn(1,500);%产生x轴方向噪声ynoise=sqrt*randn(1,500);%产生y轴方向噪声x=cos(sita)+xnoise;%产生x轴方向观测信号y=sin(sita)+ynoise;%产生y轴方向观测信号%产生维纳滤波中x方向上观测信号的自相关矩阵rxx=xcorr(x);for i=1:100for j=1:100mrxx(i,j)=rxx(500-i+j);endendxd=cos(sita);%产生维纳滤波中x方向上观测信号与期望信号的互相关矩阵rxd=xcorr(x,xd);for i=1:100mrxd(i)=rxd(499+i);endhoptx=inv(mrxx)*mrxd';%由维纳-霍夫方程得到的x方向上的滤波器最优解fx=conv(x,hoptx);%滤波后x方向上的输出nx=sum(abs(xd).^2);eminx=nx-mrxd*hoptx;%x方向上最小均方误差%产生维纳滤波中y方向上观测信号的自相关矩阵ryy=xcorr(y);for i=1:100for j=1:100mryy(i,j)=ryy(500-i+j);endendyd=sin(sita);%产生维纳滤波中y方向上观测信号与期望信号的互相关矩阵ryd=xcorr(y,yd);for i=1:100mryd(i)=ryd(499+i);endhopty=inv(mryy)*mryd';%由维纳-霍夫方程得到的y方向上的滤波器最优解fy=conv(y,hopty);%滤波后y方向上的输出ny=sum(abs(yd).^2);eminy=ny-mryd*hopty;%y方向上最小均方误差subplot(2,4,1)plot(xd);title('x方向期望信号');subplot(2,4,2)plot(xnoise);title('x方向噪声信号');subplot(2,4,3)plot(x);title('x方向观测信号');subplot(2,4,4)n=0:500;plot(n,eminx);title('x方向最小均方误差');subplot(2,4,5)plot(yd);title('y方向期望信号'); subplot(2,4,6)plot(ynoise);title('y方向噪声信号'); subplot(2,4,7)plot(y);title('y方向观测信号'); subplot(2,4,8)plot(n,eminy);title('y方向最小均方误差'); figure;plot(xd,yd,'k');hold on;plot(x,y,'b:');hold on;plot(fx,fy,'g-');title('最终结果');运行结果如下:图2x方向及y方向的期望信号、噪声信号、观测信号以及滤波后的最小均方误差如上图2所示。
图3滤波后的到的信号与原始信号和噪声信号的对比如上图3所示,滤波后的结果与期望信号还是很接近的,整体上达到了最优滤波的效果。
参考文献:1.姚天仁孙洪。
现代数字信号处理。
华中科技大学出版社,20052.崔晓杰,维纳滤波的应用研究,2006。