维纳滤波器-matlab实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验报告册
数字图形图像处理
维纳滤波器matlab实现
学院:人民武装学院学院
专业:计算机科学与技术
班级: 11级计科班
学号: 1120070544 学生姓名:苏靖
指导教师:
维纳滤波的原理及其matlab 实现,以案例的形式展示FIR 维纳滤波的特性。
2.维纳滤波概述
维纳(Wiener )是用来解决从噪声中提取信号的一种过滤(或滤波)方法。这种线性滤波问题,可以看做是一种估计问题或一种线性估计问题。
一个线性系统,如果它的单位样本响应为)(n h ,当输入一个随机信号)(n x ,且
)()()(n v n s n x += (1) 其中)(n x 表示信号,)(n v )表示噪声,则输出)(n y 为
∑-=m
m 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) 采用最小均方误差准则作为最佳过滤准则的原因还在于它的理论分析比较简单,不要求对概率的描述。
4.FIR 维纳滤波器的matlab 实现
4.1问题描述
假设一个点目标在x ,y 平面上绕单位圆做圆周运动,由于外界干扰,其运动轨迹发生了偏移。其中,x 方向的干扰为均值为0,方差为0.05的高斯噪声;y 方向干扰为均值为0,方差为0.06的高斯噪声。
1) 产生满足要求的x 方向和y 方向随机噪声500个样本;
2) 明确期望信号和观测信号;
3) 试设计一FIR 维纳滤波器,确定最佳传递函数:1
opt xx xs h R R -=,并用该滤波器处理
观测信号,得到其最佳估计。(注:自行设定误差判定阈值,根据阈值确定滤波器的阶数或传递函数的长度)。
4) 分别绘制出x 方向和y 方向的期望信号、噪声信号、观测信号、滤波后信号、最小均
方误差信号的曲线图;
5) 在同一幅图中绘制出期望信号、观测信号和滤波后点目标的运动轨迹。 4.2 Matlab 仿真及运行结果
用Matlab 实现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);
for i=1:100
for j=1:100
mrxx(i,j)=rxx(500-i+j);
end
end
%产生维纳滤波中x方向上观测信号与期望信号的互相关矩阵
rxd=xcorr(x,xd);
for i=1:100
mrxd(i)=rxd(499+i);
end
hoptx=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:100
for j=1:100
mryy(i,j)=ryy(500-i+j);
end
end
yd=sin(sita);
%产生维纳滤波中y方向上观测信号与期望信号的互相关矩阵
ryd=xcorr(y,yd);
for i=1:100
mryd(i)=ryd(499+i);
end
hopty=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方向期望信号');