当前位置:文档之家› 维纳滤波器的设计及Matlab仿真实现

维纳滤波器的设计及Matlab仿真实现

Wiener 滤波器的设计及Matlab 仿真实现
1.实验原理
在许多实际应用中,人们往往无法直接获得所需的有用信号,能够得到的是退化了或失真了的有用信号。

例如,在传输或测量信号s(n)时,由于存在信道噪声或测量噪声v(n),接受或测量到的数据x(n)将与s(n)不同。

为了从x(n)中提取或恢复原始信号s(n),需要设计一种滤波器,对x(n)进行滤波,使它的输出y(n)尽可能逼近s(n),成为s(n)的最佳
估计,即y(n) = )(ˆn s。

这种滤波器成为最优滤波器。

Wiener 滤波器是“理想”意义上的最优滤波器,有一个期望响应d(n),滤波器系数的
设计准则是使滤波器的输出y(n)(也常用)(ˆn d
表示)是均方意义上对期望响应的最优线性估计。

Wiener 滤波器的目的是求最优滤波系数],,,,,,[,1,0,1, k o o o o w w w w w -=,从而
使])(ˆ)([])([)(2
2
n d
n d E n e E n J -==最小。

通过正交性原理,导出
)()(k r k i r w
xd x
i oi -=-∑∞
-∞
=, 2,1,0,1,-=k
该式称为Wiener-Hopf 方程,解此方程,可得最优权系数},2,1,0,1,,{ -=i w oi 。

Wiener-Hopf 方程的矩阵形式为xd o x r w R =,解方程求得xd x o r R w 1
-=
2.设计思路
下面我们通过具体的例子来说明Wiener 滤波器的设计方法:
考虑如下图所示的简单通信系统。

其中,产生信号S(n)所用的模型为
)95.01/(1)(11-+=z z H ,激励信号为)3.0,0(~)(WGN n w 。

信号s(n)通过系统函数为)85.01/(1)(12--=z z H 的信道,并被加性噪声)1.0,0(~)(WGN n v 干扰,v(n)与w(n)不相
关。

确定阶数M=2的最优FIR 滤波器,以从接收到的信号x(n) = z(n) + v(n)中尽可能恢复发送信号s(n),并用MATLAB 进行仿真。

解:
s (n )是一个AR (1)过程,在x (n )= z (n )+ v (n )中,z (n )是一个二阶AR(2)过程。

由于白噪声产生z (n )的系统函数相当于H (z )= H1(z )H2(z ),因此
21118.01.01)85.01)(95.01()(-----+=-+=z z z z z A 。

二阶AR (2)过程的参数1.01,2=a ,8.02,2-=a ,方差3.02W =σ。

由二阶AR (2)参数可以确定)(r z k ,
由Yule-Walker 方程⎥
⎦⎤⎢⎣⎡)0()1()1()0(z z z z r r r r ⎥⎦⎤⎢⎣⎡-=⎥⎦
⎤⎢⎣⎡)2()1(2,21,2z z r r a a ,
以及AR 模型的方差表达式)2()1()0(2,21,22
w z z z r a r a r ++=σ,
反解)1(),0(z z r r 得,
9
10
]1.0)8.01[(3.08.018.01]
)1[(11)0(222
1,222,22
2,22
,2=
--+-=
-+-+=
a a a a r w
z σ9
51)0()1(2
,21,2-=+-=
a r a r z z
由此确定z (n )的自相关矩阵为⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡--=9109595910z R 进而有]21.156.056.021.1[1.0100191095959102--=⨯⎥⎦⎤⎢⎣⎡+⎥⎥⎥⎦
⎤⎢⎢⎢⎣⎡--=+=I R R v z x σ 期望响应d (n )= s (n ),接下来,求)(k r xd -。

因为))()(()(n d k n x E k r xd -=-
把)()1(85.0)(n d n z n z =--和)()()(n v n z n x +=代入上式,得
)1(85.0)()(--=-k r k r k r z z xd
故58.1)1(85.0)0()0(=-⨯-=z z xd r r r
50.1)0(85.0)1()1(-=⨯-=-z z xd r r r
从而有⎥⎦⎤
⎢⎣⎡-=50.158.1xd r ,将此式带入Wiener-Hopf 方程解得最优权系数为

⎦⎤⎢⎣⎡-==-8656.09052.01
xd x o r R w 3.实验源码
MATLAB 仿真实现该维纳滤波器的程序: % Generate signal s(n) N = 64;
w = sqrt(0.3)*randn(N,1); A1 = [1 0.95];
s = filter(1, A1, w); d=s;
% Transmit and add a noise A2 = [1 -0.85];
z = filter(1, A2, s);
v = sqrt(0.1)*randn(N,1); x = z + v;
% Wiener Filtering
y = filter([0.9052 -0.8656], 1, x);
% plot the waveforms n = [0 : N-1]; subplot(211);
plot(n, d, 'b-x', n, x, 'r-o');
legend('d(n)', 'x(n)'); axis tight ; ylabel('Amplitude'); xlabel('Time (n)');
title('Desired Response / Input Signal'); subplot(212);
plot(n, d, 'b-x', n, y, 'r-o');
legend('d(n)', 'y(n)'); axis tight ; ylabel('Amplitude'); xlabel('Time (n)');
title('Desired Response / Output Signal');
4.仿真结果及分析
仿真结果如图所示:
从图中可明显看出,y(n)比x(n)更接近于d(n),维纳滤波器从接收到的信号x(n) = z(n) + v(n)中尽可能地恢复出了发送信号s(n)。

5.实验结论
维纳滤波器的设计目标是使滤波器误差平方的集平均(期望值)最小,在平稳并各态历
经的条件下,相当于在)(+∞∞-,误差的平方和最小,因此,求解最优滤波器需要输入信号
的自相关矩阵和输入信号与期望响应的互相关矢量,这在实际应用中一般很难得到。

LS 滤波器的目标是现实的,它使用输入信号和期望响应在测量区间的观测值,通过令误差平方和在观测区间最小,而设计出滤波器系数。

相关主题