网络程序设计java实验报告.docx

上传人:精*** 文档编号:1082665 上传时间:2024-04-14 格式:DOCX 页数:15 大小:632.38KB
下载 相关 举报
网络程序设计java实验报告.docx_第1页
第1页 / 共15页
网络程序设计java实验报告.docx_第2页
第2页 / 共15页
网络程序设计java实验报告.docx_第3页
第3页 / 共15页
网络程序设计java实验报告.docx_第4页
第4页 / 共15页
网络程序设计java实验报告.docx_第5页
第5页 / 共15页
点击查看更多>>
资源描述

1、实验一 维纳滤波器的计算机实现学院:生命学号:3112037011姓名:张秀芬一、实验目的 1利用计算机编程实现加性噪声信号的维纳滤波。 2将计算机模拟实验结果与理论分析结果相比较,分析影响维纳滤波效果的各种因素,从而加深对维纳滤波的理解。 3.利用维纳一步纯预测方法实现对信号生成模型的参数估计。 二 实验原理与方法 维纳滤波是一种从噪声背景中提取信号的最佳线性滤波方法,假定一个随机信号x(n)具有以下形式: x(n)=s(n)+v(n) (1-1) 其中,s(n) 为有用信号,v(n) 为噪声干扰,将其输入一个单位脉冲响应为 h(n) 的线性系统,其输出为 (1-2) 我们希望x(n) 通过

2、这个系统后得到的y(n) 尽可能接近于s(n) ,因此,称y(n) 为信号s(n)的估值。按照最小均方误差准则,h(n) 应满足下面的正则方程: (1-3) 这就是著名的维纳霍夫方程,其中是 x(n)的自相关函数,定义为 (1-4) 是 x(n)与 s(n)的互相关函数,定义为 (1-5) 这里,E表示求数学期望。 在要求 h(n)满足因果性的条件下,求解维纳-霍夫方程是一个典型的难题。虽然目前有几种求解 h(n)的解析方法,但它们在计算机上实现起来非常困难。因此,本实验中,利用近似方法,即最佳 FIR 维纳滤波方法,在计算机上实现随机信号的维纳滤波。 设 h(n)为一因果序列,其长度为 N,

3、则 (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)称为信号的生成模型,其中 a=0.95, w(n)是零均值方差为 的高斯白噪声

4、,v(n)是与 s(n)互不相关的高斯白噪声,其均值为零,方差 。 根据理论推导,此时维纳最佳滤波器为 (1-13) 单位脉冲响应为 (1-14) 由此可以实现对信号 x(n)的最佳过滤,即 (1-15) 其中为 s(n)的最佳估值。同时,可以推出,经过理想维纳滤波后,均方误差应为 (1-16) 在实验中,我们利用下面公式来统计均方误差: (1-17) 其中L 为维纳滤波数据长度。 通过理论推导,我们可以得到 s(n)的自相关函数,进而得到 x(n)的自相关函数以及 s(n)与 x(n)的互相关函数。 实际中,一般很难确切地知道,通常是利用有限个 x(n)和 s(n)的样本来估计它们 为了在检

5、验实际中某次产生序列的自相关特性与理论值的近似程度,我们可以采用下式进行度量: 该式表示了自相关函数的理论值与某次实现的实际值的相对平方误差。实验中为了得到与自相关特性理论值相符的观测序列,往往需要多次产生序列,直到两者的相对平方误差 足够小。本实验中,我们取 K=50,并认为的序列才是满足要求的。 在上面这部分实验中,s(n)是已知的。但是在实际中如果已知 s(n),维纳滤波也就没有多少意义了。因此,上述实验纯粹是为了理解维纳滤波原理而设计的。 考虑维纳一步纯预测问题,假定s(n)的生成模型为 (1-21) 其中 w(n)是均值为零,方差等于的高斯白噪声。在已知准确自相关函数的情况下,由下面

6、 Yule-Walker 方程可以得到信号生成模型参数 (1-22) 其中 自相关矩阵,其意义类似于(1-9)式,只是将 N 换成 p+1, 换成而已,A为(p+1)*1 的系数列向量,定义为 (1-23) 为(p+1)*1 的单位列向量,除第一个元素等于1外,其余元素均为零,即 (1-24) 三、实验内容与步骤 一维纳滤波器1根据图 1.1 给出的框图编制维纳滤波程序。其中分别是理想维纳滤波和FIR 滤波的输出,分别为滤波前、理想滤波后和 FIR 滤波后的噪声方差。 2.运行维纳滤波程序,选择 L=5000,N=10,观察并记录实验结果,分析比较下列三个问题: s(n)与信号x(n)在维纳滤

7、波前后对比=1.0175 =0.2461分析:可以看出没有滤波之前信号x(n)中含有大量的噪声,经过维纳滤波器后信号x(n)中的噪声明显减小,与实际信号s(n)比较接近。 估计和理想的 h(n)比较分析:可以看出估计值 与理想h(n)相差不大,因此可以用近似模拟h(n). 理想的维纳滤波和 FIR 维纳滤波效果=0.3227=0.2461分析: 从图形和噪声可以看出理想滤波比实际滤波更接近于原始信号,但两者相差不大。 若去掉流程图 1.1 中判断数据自相关和互相关特性的步骤,可能得出理想维纳滤波效果不如 FIR 滤波的结论,这个步骤是为检测实际产生序列的自相关与互相关特性与理论值的接近程度,若

8、误差很小且通过我们设定的某一限则认为两者近似,所以最终的滤波效果才很近似。如果没有这个步骤,实际自相关或互相关则是任意的,完全有可能出现比理想维纳滤波更好的效果。 3.固定 L=5000, 分别取 N=3、20,根据实验结果,观察 N 的大小对的估计和滤波效果的影响。N=3N=20分析:可以看出当N比较大时, 更加精确,误差更小,滤波效果更接近理想,所以可以通过增加N使FIR滤波器更接近于理想的维纳滤波器。4 固定 N=10, 改变 L=10000,50000,根据实验结果,观察并记录 L 的大小对的精度和滤波效果的影响。L=10000L=50000 分析:从图中可以看出,随着L的增加,更接近

9、理想的维纳滤波器,滤波效果也明显改善。这表明样本量越大,估计越精确。这是由于样本量增多,滤波信号与原始信号的均方误差的随机性降低,导致均方误差的减小。二维纳一步纯预测1.根据框图1.2 编制信号生成模型参数估计程序。2.运行信号生成模型参数估计程序,选择 p=1, 观察并记录 的最佳估值,与理论值进行比较。实验结果: =-0.5849 =0.6=0.9954 =13.固定 p=1, , 改变 L=50,500, 观 L 的大小对信号生成模型参数估计精度的影响。 实验结果:理论值=0.6 =1L=50=-0.5571=1.0343L=500=-0.5946=0.9925分析:可以看出L的增大,可

10、以使信号模型参数估计精度提高四、思考题 1推导公式(1-13),验证式(1-16)的结果。 2由公式(1-21),怎样得到答:已知 s(n)的生成模型为 (1-21) 其中 w(n)是均值为零,方差等于的高斯白噪声。在已知自相关函数的情况下,由Yule-Walker 方程可以得到信号生成模型参数 (1-22) 其中 自相关矩阵 A为(p+1)*1 的系数列向量,定义为 (1-23) 为(p+1)*1 的单位列向量,除第一个元素等于1外,其余元素均为零,即 (1-24) 五、附录1.维纳滤波器程序L = 50000; % 根据实验要求变动 N=10; % h(n)序列长度a = 0.95; K

11、= 50; sigma_a2 = 1-a2; a_ = 1, -a; while(1) wn = sqrt(sigma_a2)*( randn(L,1); sn = filter(1, a_, wn); vn = randn(L,1); xn = sn + vn; r_xx = xcorr(xn, unbiased ); %自相关函数的实际值 r_xx_t = a.abs(-K:K); r_xx_t(K+1)=r_xx_t(K+1)+1; %自相关函数的理论值 p = xcorr(sn,xn,unbiased); r_xs = p(L : L+K); %互相关函数的实际值 rou_xx = s

12、um(r_xx(L-K:L+K)-r_xx_t).2)/sum(r_xx_t.2); rou_xs = (sum(r_xs-a.0 :K).2)/sum(a.0:K.2); if rou_xx 0.03 & rou_xs 0.01 break; end end figure(color,white); %把背景颜色改成白色再显示figure(1),clf stem(r_xx(L-K:L+K),r) %自相关函数的实际值 红色曲线hold on stem(r_xx_t,b) title(自相关函数)legend(实际值,理论值)figure(color,white); %把背景颜色改成白色再显示

13、figure(2),clf stem(r_xs, r) %互相关函数的实际值 红色曲线hold on stem(a.0:K) title(互相关函数)legend(实际值,理论值)% 这样即可得一个符合要求的 x (n )序列figure(color,white); %把背景颜色改成白色再显示figure(3)stem(xn(L-99:L),r)hold onstem(sn(L-99:L),b)legend(xn,sn)title(滤波前最后100个点的x(n)与s(n) %滤波器的系统传递函数Rxs=r_xs(1:N);Rxx=toeplitz(r_xx(L:L+N-1);hn=inv(Rx

14、x)*Rxs; %h(n)的实际值hn_t=0.2379*(0.7239).0:N-1;figure(color,white); %把背景颜色改成白色再显示figure(4),clf stem(hn,r) %h(n)的实际值 红色曲线hold on stem(hn_t,b) title(h(n)legend(实际值,理论值) %理想的维纳滤波器 yn_t = filter(0.2379,1,-0.7239,xn); figure(color,white); %把背景颜色改成白色再显示figure(5)stem(yn_t(L-99:L),r)%plot(yn_t(L-99:L),r)hold o

15、nstem(sn(L-99:L),b)%plot(sn(L-99:L),b)legend(滤波后的信号,sn)title(理想的维纳滤波后最后100个点的x(n)与s(n) %实际的维纳滤波器for i=N:L yn(i)=0;for m=1:N-1 yn(i)=yn(i)+hn(m)*xn(i-m);endendfor i=1:N-1 yn(i)=xn(i);endfigure(color,white); %把背景颜色改成白色再显示figure(6)stem(yn(L-99:L),r)%plot(yn(L-99:L),r)hold onstem(sn(L-99:L),b)%plot(sn(L

16、-99:L),b)legend(滤波后的信号,sn)title(实际的维纳滤波滤后最后100个点的x(n)与s(n) e_x=(sum(xn-sn).2)/Le_i=(sum(yn_t-sn).2)/Le_r=(sum(yn-sn).2)/L2.维纳预测器程序p=1;a1=-0.6;L=100sigma=1;e=zeros(p+1);e(1)=1;epoch=1; while epoch=100wn=sqrt(sigma)*randn(L,1);sn=filter(1,1,a1,wn);r_ss= xcorr(sn, unbiased ); R_ss=toeplitz(r_ss(L:L+p-1);e=-r_ss(L+1:p+L);a1_t(epoch)=inv(R_ss)*e;sigma_t(epoch)=1,a1*r_ss(L:p+L);epoch=epoch+1;enda1_t=mean(a1_t)sigma_t=mean(sigma_t)

展开阅读全文
相关资源
相关搜索
资源标签

当前位置:首页 > 技术资料 > 实施方案

版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。

Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1 

陕公网安备 61072602000132号     违法和不良信息举报:0916-4228922