资源描述:
《维纳滤波器-matlab实现.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验报告册数字图形图像处理维纳滤波器matlab实现学院:人民武装学院学院专业:计算机科学与技术 班级:11级计科班学号:学生姓名:苏靖指导教师:维纳滤波的原理及其matlab实现,以案例的形式展示FIR维纳滤波的特性。2.维纳滤波概述维纳(Wiener)是用来解决从噪声中提取信号的一种过滤(或滤波)方法。这种线性滤波问题,可以看做是一种估计问题或一种线性估计问题。一个线性系统,如果它的单位样本响应为,当输入一个随机信号,且(1)其中表示信号,)表示噪声,则输出为(2)我们希望通过线性系统后得到的尽
2、量接近于,因此称为的估计值,用表示,即(3)则维纳滤波器的输入—输出关系可用下面图1表示。图1实际上,式(2)所示的卷积形式可以理解为从当前和过去的观察值,,…,…来估计信号的当前值。因此,用进行过滤问题实际上是一种统计估计问题。 一般地,从当前的和过去的观察值,,…估计当前的信号值成为过滤或滤波;从过去的观察值,估计当前的或者将来的信号值称为外推或预测;从过去的观察值,估计过去的信号值称为平滑或内插。因此维纳滤波器又常常被称为最佳线性过滤与预测或线性最优估计。这里所谓的最佳与最优是以最小均方误差
3、为准则的。 如果我们分别以与表示信号的真实值与估计值,而用表示他们之间的误差,即(4)显然可能是正值,也可能是负值,并且它是一个随机变量。因此,用它的均方误差来表达误差是合理的,所谓均方误差最小即它的平方的统计期望最小:(5)采用最小均方误差准则作为最佳过滤准则的原因还在于它的理论分析比较简单,不要求对概率的描述。4.FIR维纳滤波器的matlab实现4.1问题描述假设一个点目标在x,y平面上绕单位圆做圆周运动,由于外界干扰,其运动轨迹发生了偏移。其中,x方向的干扰为均值为0,方差为0.05的高斯
4、噪声;y方向干扰为均值为0,方差为0.06的高斯噪声。1)产生满足要求的x方向和y方向随机噪声500个样本;2)明确期望信号和观测信号;3)试设计一FIR维纳滤波器,确定最佳传递函数:,并用该滤波器处理观测信号,得到其最佳估计。(注:自行设定误差判定阈值,根据阈值确定滤波器的阶数或传递函数的长度)。4)分别绘制出x方向和y方向的期望信号、噪声信号、观测信号、滤波后信号、最小均方误差信号的曲线图;5)在同一幅图中绘制出期望信号、观测信号和滤波后点目标的运动轨迹。4.2Matlab仿真及运行结果用Mat
5、lab实现FIR滤波器,并将先前随机产生的500个样本输入,得到最佳估计。具体程序如下:clear;clf;sita=0:pi/249.5:2*pi;xnoise=sqrt(0.05)*randn(1,500);%产生x轴方向噪声ynoise=sqrt(0.06)*randn(1,500);%产生y轴方向噪声x=cos(sita)+xnoise;%产生x轴方向观测信号y=sin(sita)+ynoise;%产生y轴方向观测信号%产生维纳滤波中x方向上观测信号的自相关矩阵rxx=xcorr(x);fo
6、ri=1:100forj=1:100mrxx(i,j)=rxx(500-i+j);endendxd=cos(sita);%产生维纳滤波中x方向上观测信号与期望信号的互相关矩阵rxd=xcorr(x,xd);fori=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方向上
7、最小均方误差%产生维纳滤波中y方向上观测信号的自相关矩阵ryy=xcorr(y);fori=1:100forj=1:100mryy(i,j)=ryy(500-i+j);endendyd=sin(sita);%产生维纳滤波中y方向上观测信号与期望信号的互相关矩阵ryd=xcorr(y,yd);fori=1:100mryd(i)=ryd(499+i);endhopty=inv(mryy)*mryd';%由维纳-霍夫方程得到的y方向上的滤波器最优解fy=conv(y,hopty);%滤波后y方向上的输出n
8、y=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