实验一 维纳滤波器的计算机实现Word文件下载.docx
《实验一 维纳滤波器的计算机实现Word文件下载.docx》由会员分享,可在线阅读,更多相关《实验一 维纳滤波器的计算机实现Word文件下载.docx(13页珍藏版)》请在冰点文库上搜索。
设h(n)为一因果序列,其长度为N,则
(1-6)
同样利用最小均方误差准则,h(n)满足下面正则方程:
(1-7)
其中
(1-8)
(1-9)
(1-10)
这里T表示转置运算。
称
为信号x(n)的N阶自相关矩阵,
为x(n)与s(n)的互相关函数向量。
当
为满秩矩阵时,由公式(1-7)可得
(1-11)
由此可见,利用有限长的h(n)实现维纳滤波器,只要已知
和
,就可以按上式解得满足因果性的h。
虽然它不同于真正的维纳滤波器,但是只要N选择的足够大,它就可以很好地逼近真正的维纳滤波器,这一点我们可以在下面实验中得到证实。
在本实验中,s(n)由下式来确定:
(1-12)
其中
是零均值方差为
的均匀分布白噪声,v(n)是与s(n)互不相关的均匀分布白噪声,其均值为零,方差
。
根据理论推导,此时维纳最佳滤波器为
(1-13)
单位脉冲响应为
(1-14)
由此可以实现对信号x(n)的最佳过滤,即
(1-15)
为s(n)的最佳估值。
同时可以推出,经过理想维纳滤波后,均方误差应为
(1-16)
在实验中,我们利用下面公式来统计均方误差:
(1-17)
其中L为维纳滤波数据长度。
实际中,一般很难确切地知道
,通常是利用有限个x(n)和s(n)的样本来估计它们
(1-18)
(1-19)
为了在检验实际中某次产生序列的自相关特性与理论值的近似程度,我们可以采用下式进行度量:
(1-20a)
(1-20b)
该式表示了自相关函数的理论值与某次实现的实际值的相对平方误差。
实验中为了得到与自相关特性理论值相符的观测序列,往往需要多次产生序列,直到两者的相对平方误差
足够小。
本实验中,我们取K=50,并认为
且
的序列才是满足要求的。
三、设计内容与步骤
1.仔细阅读维纳滤波原理,根据图1.1给出的框图编制维纳滤波程序。
2.运行维纳滤波程序,选择L=500,N=10,观察并记录实验结果,分析比较下列三个问题:
①与s(n)比较,信号x(n)在维纳滤波前后有何差别?
滤波效果如何?
②估计出
的和理想的h(n)比较,近似程度如何?
③理想的维纳滤波和FIR维纳滤波效果有何差异?
图1.1
3.固定L=500,分别取N=3、20,根据实验结果,观察N的大小对
的估计和滤波效果的影响。
记录实验结果。
4.固定N=10,改变L=200,1000,根据实验结果,观察并记录L的大小对
的精度和滤波效果的影响。
四、设计报告要求
1.简述设计目的和原理。
2.按设计步骤附主要结果。
3.根据结果总结主要结论。
4.如果使用自编程序,附上源程序。
5.实验感想。
五、附录参考程序
(1)绘图程序,绘图是跟据一次实验结果绘制并非多次重复取均值后绘制
clearall
%输入信号样本个数L,FIR滤波器阶数N%
L=input('
L='
);
N=input('
N='
a=0.95;
%产生L个v(n)、u(n)、s(n)和x(n),在同一座标内绘出最后100个s(n)和x(n)
w=-sqrt(3*(1-(0.95^2)))+2*sqrt(3*(1-(0.95^2)))*rand(1,L);
%w(n)的标准差
v=-sqrt(3)+2*sqrt(3)*rand(1,L);
u=ones(1,L);
s
(1)=1;
%计算s(n)
i=2;
while(i<
=L);
s(i)=a*s(i-1)+w(i);
i=i+1;
end;
i=1;
%计算x(n)
x(i)=s(i)+v(i);
figure
(1);
%绘制s(n)(红色),x(n)(蓝色)
k=(L-99):
1:
L;
plot(k,s(k),'
r'
k,x(k),'
k--'
legend('
s(n)'
'
x(n)'
0);
title('
s(n)和x(n)'
xlabel('
n'
ylabel('
输入信号'
%利用L个v(n),s(n),估计Rxx和rxs,调用矩阵求逆子程序计算h1,将N个理想的h(n)和估计的h1绘与同一座标内%
fxx=zeros(1,N);
%计算fxx
for(i=1:
N);
for(k=0:
(L-i-1));
fxx(i)=(1/(L-i))*x(k+1)*x(k+i)+fxx(i);
end;
%生成Rxx矩阵
for(k=1:
Rxx(k,i)=fxx(abs(k-i)+1);
rxs=zeros(1,N);
%计算rxs
rxs(i)=(1/(L-i))*x(k+1)*s(k+i)+rxs(i);
h1=(inv(Rxx))*rxs'
;
%绘制h(理想滤波器),h1(估计滤波器)
h(i)=0.238*(0.724)^i*u(i);
figure;
k=1:
N;
plot(k,h(k),'
k,h1(k),'
理想的h(n)和估算的h(n)'
理想的h(n)'
估算的h(n)'
%重新生成L点随机序列%
%利用公式(1-15),进行理想维纳滤波得L个SI(n),将最后100个S(n)和SI(n)绘制于同一坐标内%
S=conv(h,x);
SI
(1)=S
(1);
for(i=2:
L);
SI(i)=0.724*SI(i-1)+0.238*x(i);
k,SI(k),'
s(n)和Si(n)'
Si(n)'
理想滤波输出'
%由h1(n),根据公式(1-6)对x(n)进行过滤得L个SR(n)将最后100个s(n)和SR(n)绘制与同一坐标内%
SR=conv(h1,x);
k,SR(k),'
s(n)和Sr(n)'
Sr(n)'
实际滤波输出'
%由L个x(n),s(n),SI(n),SR(n),根据公式(1-17),统计并打印出EX2,EI2,ER2%
EX2=0;
EI2=0;
ER2=0;
EX2=1/L*((x(i)-s(i))^2)+EX2;
%计算接受信号与原信号的误差
EI2=1/L*((SI(i)-s(i))^2)+EI2;
%计算维纳滤波器理想滤波
%计算N点的维纳滤波器理想滤波
EI21=1/L*((S(i)-s(i))^2)+EI2;
%计算估计滤波器滤波
ER2=1/L*((SR(i)-s(i))^2)+ER2;
EX2
EI2
ER2
(2)检验N、L对FIR滤波器的估计精度和滤波效果的影响,为尽量保证统计意义故重复了1000次后取均值。
EX=0;
EI=0;
ER=0;
for(z=1:
100);
%重复1000次
%产生L个v(n)、u(n)、s(n)和x(n),在同一座标内绘出最后100个s(n)和x(n)%
figure
(2);
figure(3);
figure(4);
temp1(z)=EX2;
temp2(z)=EI2;
temp3(z)=ER2;
EX=EX+EX2;
EI=EI+EI2;
ER=ER+ER2;
EX=EX/1000;
EI=EI/1000;
ER=ER/1000;
EX
EI
ER