当前位置:文档之家› 维纳滤波器

维纳滤波器

西安电子科技大学统计与自适应信号处理仿真学院:班级:学号:姓名:2013年12月FIR 维纳滤波器1维纳滤波原理概述维纳(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 E n ξ采用最小均方误差准则作为最佳过滤准则的原因还在于它的理论分析比较简单,不要求对概率的描述。

2维纳-霍夫方程的求解为了按(5)式所示的最小均方误差准则来确定维纳滤波器的冲激响应)(n h ,令)(n ξ对)(j h 的导数等于零,即可得m i m Ri h m R i xx xs ∀-=∑,)()()( (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到∞+取正整数值。

上述三种情况下标准方程的解法不同,本文将描述因果IIR 维纳滤波器和FIR 维纳滤波器的求解。

3 FIR 维纳滤波器的求解设滤波器冲激响应序列的长度为N ,冲激响应矢量为TN h h h h )]1()....1()0([-= (14) 滤波器输入数据矢量为TN n x n x n x n x )]1()...1()([)(+--= (15) 则滤波器的输出为)()()()(^n x h h n x n s n y TT === (16) 这样,式(6)所示的维纳-霍夫方程可写成R h P T T =或Rh P = (17) 其中)]()([n s n x E P = (18) 是)(n s 与)(n x 的互相关函数,它是一个N 维列矢量;R 是)(n x 的自相关函数,是N 阶方阵)]()([n x n x E R T= (19) 利用求逆矩阵的方法直接求解式(10),得P R h opt 1-= (20) 这里opt 表示“最佳”,这就是FIR 维纳滤波器的冲激响应。

4 FIR 维纳滤波器的matlab 实现这是FIR 维纳滤波器的原理框图:)1+图2 FIR 维纳滤波器的原理框图设计维纳滤波器的过程就是寻求在最小均方误差下滤波器的单位脉冲响应或传递函数的表达式,其实质就是解维纳-霍夫(Wiener-Hopf)方程。

这是用matlab设计FIR维纳滤波器的流程图:图3 FIR维纳滤波器的流程图5 FIR维纳滤波器的matlab程序%************************************************************ % wiener.m% FIR维纳滤波器的设计与仿真% *********************************************************** clear all;clc;%************************* 生成信号************************* % 信号振幅A=1.0;% 初始的相位th0=0;N=input('请输入信号长度');vn=randn(1,N);%产生随机高斯白噪声%产生信号sn = zeros(1,N);k = 0:N-1;sn = A*sin(2*pi*k/N+th0)+2;xn=sn+vn; %信号中加入随机高斯白噪声%******************** 计算自相关函数Rxx ********************** Rxx=xcorr(xn,xn); %得到混合信号的自相关函数M=input('输入滤波器阶数');for i=1:M %得到混合信号的自相关矩阵for j=1:Mrxx(i,j)=Rxx(i-j+N);endend%******************** 计算互相关函数Rxy ********************** Rxy=xcorr(xn,sn); %得到混合信号和原信号的互相关函数for i=1:Mrxy(i)=Rxy(i+N-1);end %得到混合信号和原信号的互相关向量%********** 利用维纳-霍夫方程计算wiener滤波器系数************** h1=inv(rxx)*rxy';%************** 利用得到的wiener滤波器滤波******************** out_signal=conv(xn,h1);yn=out_signal(1:N);%*********************** 变换到频域*************************** sf=abs(fftshift(fft(sn,N)));xf=abs(fftshift(fft(xn,N)));yf=abs(fftshift(fft(yn,N)));%*********************** 在时域画图***************************%分别画出原信号,加入噪声的混合信号,滤波后的信号k=1:N;figure;plot(k,sn);axis([0,N,0,6]);title('原始信号');figure;plot(k,xn);axis([0,N,0,6]);title('加噪后的信号');figure;plot(k,yn);axis([0,N,0,6]);title('滤波后的信号');%************************ 在频域画图**************************** %分别画出变换到频域后原信号,加入噪声的混合信号,滤波后的信号k=1:N;figure;plot(k,sf);axis([0,N,0,2000]);title('原始信号');figure;plot(k,xf);axis([0,N,0,2000]);title('加噪后的信号');figure;plot(k,yf);axis([0,N,0,2000]);title('滤波后的信号');%************************** 计算均方误差MSE ********************** mse=mean((yn-sn).^2) %滤波后的信号相对原信号的统计均方误差%****************************************************************** 6 仿真结果(1)保持滤波器阶数不变,改变信号样本的长度A.信号样本点数1000 维纳滤波器阶数100图4 时域仿真图图5 频域仿真图B.保持维纳滤波器阶数100,改变信号样本点数N为5000和10000后滤波后的信号仿真图对比N=1000 N=5000 N=10000图6 不同信号样本点数下的滤波后的信号仿真图对比C.保持维纳滤波器阶数100,信号样本点数N分别为1000、2000、3000…10000。

每个样本点数下仿真100次。

图7 不同信号样本点数N下的MSED.仿真结果分析:a)从A仿真结果可以看出,维纳滤波器对于噪声过滤有着显著的效果;b)从B仿真结果可以看出,保持滤波器阶数不变,改变信号样本的长度(点数)滤波的效果随着信号样本的长度的增加而提高。

(这是因为信号样本越长信号的统计特征就越完整)c)从C仿真结果可以看出,均方误差MSE随着信号样本的长度的增加而减小,这和B仿真结果的得出的结论是一致的。

(2)保持信号样本的长度不变,改变滤波器阶数A.保持信号样本点数N为1000,改变维纳滤波器阶数为10、50和100后滤波后的信号仿真图对比阶数=10 阶数=50 阶数=100图8 不同滤波器阶数下的滤波后的信号仿真图对比B.保持信号样本点数N为1000,改变维纳滤波阶数为10、20、30…100滤波后的MSE,每个样本点数下仿真100次。

图9 不同维纳滤波器阶数下的MSEC.仿真结果分析:a)从A仿真结果可以看出,维纳滤波器的阶数越大,滤波后的信号更接近原始信号,但随之计算量也增大b)从B仿真结果可以看出,均方误差MSE随着维纳滤波器的阶数的增加而减小,这和A仿真结果的得出的结论是一致的。

相关主题