分享

维纳滤波原理及其matlab实现

 roseforgreat 2016-09-05



滤波技术是信号分析、处理技术的重要分支,无论是信号的获取、传输,还是信号的处理和交换都离不开滤波技术,它对信号安全可靠和有效灵活地传递是至关重要的。信号分析检测与处理的一个十分重要的内容就是从噪声中提取信号,实现这种功能的有效手段之一是设计一种具有最佳线性过滤特性的滤波器,当伴有噪声的信号通过这种滤波器的时候,它可以将信号尽可能精确地重现或对信号做出尽可能精确的估计,而对所伴随噪声进行最大限度地抑制。维纳滤波器就是这种滤波器的典型代表之一。


1.维纳滤波概述

因此维纳滤波器又常常被称为最佳线性过滤与预测或线性最优估计。这里所谓的最佳与最优是以最小均方误差为准则的。


2.维纳-霍夫方程的求解

  



3.FIR维纳滤波器的matlab实现

3.1问题描述

假设一个点目标在xy平面上绕单位圆做圆周运动,由于外界干扰,其运动轨迹发生了偏移。其中,x方向的干扰为均值为0,方差为0.05的高斯噪声;y方向干扰为均值为0,方差为0.06的高斯噪声。

1) 产生满足要求的x方向和y方向随机噪声500个样本;

2) 明确期望信号和观测信号;

3) 试设计一FIR维纳滤波器,确定最佳传递函数:
,并用该滤波器处理观测信号,得到其最佳估计。(注:
自行设定误差判定阈值,根据阈值确定滤波器的阶数或传递函数的长度)。

4) 分别绘制出x方向和y方向的期望信号、噪声信号、观测信号、滤波后信号、最小均方误差信号的曲线图;

5) 在同一幅图中绘制出期望信号、观测信号和滤波后点目标的运动轨迹。

3.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

xd=cos(sita);

%产生维纳滤波中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方向期望信号');

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('最终结果');

运行结果如下:


2

x方向及y方向的期望信号、噪声信号、观测信号以及滤波后的最小均方误差如上图2所示。


3

滤波后的到的信号与原始信号和噪声信号的对比如上图3所示,滤波后的结果与期望信号还是很接近的,整体上达到了最优滤波的效果。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多