维纳滤波器的设计及Matlab仿真实现.doc
《维纳滤波器的设计及Matlab仿真实现.doc》由会员分享,可在线阅读,更多相关《维纳滤波器的设计及Matlab仿真实现.doc(4页珍藏版)》请在冰豆网上搜索。
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)=。
这种滤波器成为最优滤波器。
Wiener滤波器是“理想”意义上的最优滤波器,有一个期望响应d(n),滤波器系数的设计准则是使滤波器的输出y(n)(也常用表示)是均方意义上对期望响应的最优线性估计。
Wiener滤波器的目的是求最优滤波系数,从而使最小。
通过正交性原理,导出,
该式称为Wiener-Hopf方程,解此方程,可得最优权系数。
Wiener-Hopf方程的矩阵形式为,解方程求得
2.设计思路
下面我们通过具体的例子来说明Wiener滤波器的设计方法:
考虑如下图所示的简单通信系统。
其中,产生信号S(n)所用的模型为,激励信号为。
信号s(n)通过系统函数为的信道,并被加性噪声干扰,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),因此。
二阶AR
(2)过程的参数,,方差。
由二阶AR
(2)参数可以确定,
由Yule-Walker方程,
以及AR模型的方差表达式,
反解得,
由此确定z(n)的自相关矩阵为
进而有
期望响应d(n)=s(n),接下来,求。
因为
把和代入上式,得
故
从而有,将此式带入Wiener-Hopf方程解得最优权系数为
3.实验源码
MATLAB仿真实现该维纳滤波器的程序:
%Generatesignals(n)
N=64;
w=sqrt(0.3)*randn(N,1);
A1=[10.95];
s=filter(1,A1,w);
d=s;
%Transmitandaddanoise
A2=[1-0.85];
z=filter(1,A2,s);
v=sqrt(0.1)*randn(N,1);
x=z+v;
%WienerFiltering
y=filter([0.9052-0.8656],1,x);
%plotthewaveforms
n=[0:
N-1];
subplot(211);
plot(n,d,'b-x',n,x,'r-o');
legend('d(n)','x(n)');axistight;
ylabel('Amplitude');
xlabel('Time(n)');
title('DesiredResponse/InputSignal');
subplot(212);
plot(n,d,'b-x',n,y,'r-o');
legend('d(n)','y(n)');axistight;
ylabel('Amplitude');
xlabel('Time(n)');
title('DesiredResponse/OutputSignal');
4.仿真结果及分析
仿真结果如图所示:
从图中可明显看出,y(n)比x(n)更接近于d(n),维纳滤波器从接收到的信号x(n)=z(n)+v(n)中尽可能地恢复出了发送信号s(n)。
5.实验结论
维纳滤波器的设计目标是使滤波器误差平方的集平均(期望值)最小,在平稳并各态历经的条件下,相当于在误差的平方和最小,因此,求解最优滤波器需要输入信号的自相关矩阵和输入信号与期望响应的互相关矢量,这在实际应用中一般很难得到。
LS滤波器的目标是现实的,它使用输入信号和期望响应在测量区间的观测值,通过令误差平方和在观测区间最小,而设计出滤波器系数。
4