FIR维纳滤波器的Matlab仿真验证剖析.ppt
《FIR维纳滤波器的Matlab仿真验证剖析.ppt》由会员分享,可在线阅读,更多相关《FIR维纳滤波器的Matlab仿真验证剖析.ppt(22页珍藏版)》请在冰点文库上搜索。
基于最优FIR滤波器的线性预测,主要内容,最优线性滤波器1.概述2.维纳滤波器3.维纳-霍夫方程的求解FIR维纳滤波器的Matlab仿真1.问题描述2.Matlab代码实现仿真结果及其分析,最优线性滤波器,1、概述最优线性滤波器和预测器,这里的最优指的是均方误差(meansquareerror,MSE)最小。
最小均方误差引出了线性滤波器理论。
在许多实际应用中,人们无法直接得到所需的有用信号,能够得到的是退化了或失真了的有用信号。
为了提取或回复有用的原始信号,这就需要设计一种滤波器,对得到的信号进行滤波,使它的输出尽可能逼近原始信号,成为最佳估计,这种滤波器就称为最优滤波器。
最优线性滤波器,2、维纳滤波器维纳(Wiener)是用来解决从噪声中提取信号的一种过滤(或滤波)方法。
维纳滤波器是最小均方误差准则在信号滤波、预测中的具体应用。
维纳滤波器是一个线性时不变系统,通过该系统后,在最小均方误差准则下给出信号s(n)的尽可能逼近。
一个线性系统,如果它的单位样本响应为,当输入一个随机信号,其中表示原始信号,表示噪声,则输出为,最优线性滤波器,我们希望通过线性系统后得到的尽量接近于,因此称为的估计值,用表示,即则维纳滤波器的输入输出关系可用下面图表示。
如果我们分别以与表示信号的真实值与估计值,而用表示他们之间的误差,即显然可能是正值,也可能是负值,并且它是一个随机变量。
因此,用它的均方误差来表达误差是合理的,所谓均方误差最小即它的平方的统计期望最小,即:
采用最小均方误差准则作为最佳过滤准则的原因还在于它的理论分析比较简单,不要求对概率的描述。
最优线性滤波器,3.维纳-霍夫方程的求解为了按式所示的最小均方误差准则来确定维纳滤波器的冲激响应,令对的导数等于零,即可得式中,是与的互相关函数,是的自相关函数,分别定义为上式称为维纳滤波器的标准方程或维纳-霍夫(Wiener-Hopf)方程。
如果已知和,那么解此方程即可求得维纳滤波器的冲激响应。
最优线性滤波器,标准方程右端的求和范围,即i的取值范围没有具体标明,实际上有三种情况:
(1)有限冲激响应(FIR)维纳滤波器,i从0到N-1取得有限个整数值;
(2)非因果无限冲激响应(非因果IIR)维纳滤波器,i从到取所有整数值;(3)因果无限冲激响应(因果IIR)维纳滤波器,i从0到取正整数值。
上述三种情况下标准方程的解法不同,本文只描述FIR维纳滤波器的求解。
最优线性滤波器,设滤波器冲激响应序列的长度为N,冲激响应矢量为滤波器输入数据矢量为则滤波器的输出为,这样,标准维纳-霍夫程可写成或,其中是与的互相关函数,它是一个N维列矢量;R是的自相关函数,是N阶方阵利用求逆矩阵的方法直接求解式,得这里opt表示“最佳”,这就是FIR维纳滤波器的冲激响应。
FIR维纳滤波器的Matlab仿真,1、问题描述产生一个随机信号w(n),通过系统H(z)=1/(1-0.9/z)后,得到原始信号s(n)。
对原始信号s(n)添加高斯白噪声noise。
设计一个FIR维纳滤波器,从被干扰后的信号中尽可能恢复s(n)。
FIR维纳滤波器的Matlab仿真,2、代码仿真%*基于最优FIR滤波器线性预测*clear;clc;N=128;%N为原始信号的长度%N=input(请输入信号长度:
);M=8;%M代表滤波器的阶数%M=input(输入滤波器阶数:
);,FIR维纳滤波器的Matlab仿真,%*产生一个原始信号*w=sqrt(0.20)*randn(N,1);A=1-0.9;s=filter(1,A,w);%*noise=sqrt(1.5)*randn(N,1);%用randn函数产生正态分布伪随机数噪声x=s+noise;%产生噪干扰后的原始信号%*产生维纳滤波中加噪信号的自相关矩阵*rxx=xcorr(x);fori=1:
Mforj=1:
Mmrxx(i,j)=rxx(N-i+j);endendxd=s;%原始信号,FIR维纳滤波器的Matlab仿真,%*产生维纳滤波中x方向上观测信号与期望信号的互相关矩阵*rxd=xcorr(x,xd);fori=1:
Mmrxd(i)=rxd(N-1+i);endhopt=inv(mrxx)*mrxd;%由维纳-霍夫方程得到滤波器最优解-FIR维纳滤波器的冲激响应out_s=filter(hopt,1,x);%滤波后的输出信号(预测信号)%out_s=conv(x,hopt);%滤波后的输出信号(预测信号)%*求均方误差*fprintf(滤波后的信号相对原信号的统计均方误差:
n);mse=mean(out_s-s).2)%滤波后的信号相对原信号的统计均方误差,FIR维纳滤波器的Matlab仿真,%*画图*subplot(2,2,1)plot(xd);title(期望信号);%axis(0N-33);%给出x,y轴最小最大值来选择坐标系的取值范围xlabel(Time(n);ylabel(Amplitude);subplot(2,2,2)plot(noise);title(噪声信号);xlabel(Time(n);ylabel(Amplitude);%axis(0N-55);,FIR维纳滤波器的Matlab仿真,subplot(2,2,3)plot(out_s);title(维纳滤波后的信号);%axis(0N-33);%用来给出x,y轴最小最大值来选择坐标系的取值范围xlabel(Time(n);ylabel(Amplitude);subplot(2,2,4)plot(x);title(噪声干扰后的信号);xlabel(Time(n);ylabel(Amplitude);%axis(0N-55);,仿真结果及分析仿真结果(信号长度N=256,阶数M=3)-mse=0.0.4045,仿真结果及分析仿真结果(信号长度N=256,阶数M=3)-mse=0.0.4045,仿真结果及分析仿真结果(信号长度N=256,阶数M=8)-mse=0.3215,仿真结果及分析仿真结果(信号长度N=256,阶数M=8)-mse=0.3215,仿真结果及分析仿真结果(信号长度N=512,阶数M=8)-mse=0.3326,仿真结果及分析仿真结果(信号长度N=512,阶数M=8)-mse=0.3326,FIR维纳滤波器的Matlab仿真,仿真结果分析:
1.维纳滤波的阶数越大,滤波后的信号更接近原始信号,但随之计算量也增大。
2.保持滤波器阶数不变改变信号样本的长度(点数)可以发现滤波的效果虽着信号样本的长度的增加而提高。
(这是因为信号样本越长信号的统计特征就越完整。
),谢谢!
Thanks!