资源描述:
《现代数字信号处理实验报告.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、现代数字信号处理实验报告1、估计随机信号的样本自相关序列。先以白噪声为例。(a)产生零均值单位方差高斯白噪声的1000个样点。(b)用公式:估计的前100个自相关序列值。与真实的自相关序列相比较,讨论你的估计的精确性。(c)将样本数据分成10段,每段100个样点,将所有子段的样本自相关的平均值作为自相关的估值,即:与(b)的结果相比,该估计值有什么变化?它更接近真实自相关序列吗?(d)再将1000点的白噪声通过滤波器产生1000点的y(n),试重复(b)的工作,估计y(n)的前100个自相关序列值,并与真实的自相
2、关序列相比较,讨论你的估计的精确性。仿真结果:(a)图1.1零均值单位方差高斯白噪声的1000个样本点分析图1.1:这1000个样本点是均值近似为0,方差为1的高斯白噪声。(b)图1.2的前100个自相关序列值分析上图可知:当k=0时取得峰值,且峰值大小比较接近于1,而当k≠0时估计的自相关值在0附近有小幅度的波动,这与真实自相关序列rx(k)=δ(k)比较接近,k≠0时估计值非常接近0,说明了估计的结果是比较精确的。(c)图1.3基于Bartlett法的前100个自相关序列值与(b)的结果相比,同样在k=0时达
3、到峰值,k≠0时0值附近上下波动;估计值的方差比较小,随着k的增大波动幅度逐渐变小,在k较大时它更接近真实自相关序列。即采用分段方法得到的自相关序列的估计值更加接近rx(k)=δ(k)。分析仿真图也可以看出:将样本数据分段,将所有子段的样本自相关的平均值作为自相关的估值时,可以有效的降低自相关估计的方差,而分段样本估计的优点在于,估计自相关序列与实际自相关序列的方差减小,且当分段数越大,估计值越趋向于无偏估计。(d)图1.4y(n)的前100个自相关序列值与真实值的对比从图中可以看出在k=0时估计与真实的自相关序
4、列之间有较小的误差,随着k的增大,估计得到的值有较大的波动,存在一定误差。源程序clcclear%%产生1000个高斯白噪声的样本点x=randn(1,1000);K=1000;figure(1);k=0:K-1;stem(k,x,'.');%绘制1000个高斯白噪声title('零均值单位方差高斯宝噪声,1000个样本点');xlabel('k');ylabel('x[k]');mean_x=mean(x)var_x=var(x)%%fork=0:99forn=k+1:1000y_ess(n)=x(n)*x(n
5、-k);endr_ess(k+1)=sum(y_ess)/1000;endfigure(2);k=[0:99];stem(k,r_ess,'.');title('根据样本点估计出的前100自相关序列值');xlabel('k');ylabel('r_ess[k]');holdon;realvalue=[1,zeros(1,99)];stem(k,realvalue,'r','.');legend('根据样本点估计出的前100自相关序列值','真实的自相关序列');error1=r_ess-realvalue;me
6、an_error_b=mean(error1)var_error_b=var(error1)%%fork=0:99form=0:9forn=k+1:100y_ess2(m+1,n)=x(n+100*m)*x(n-k+100*m);endendr_ess2(k+1)=sum(sum(y_ess2))/1000;endfigure(3);k=0:99;stem(k,r_ess2,'b.');holdon;realvalue2=[1,zeros(1,99)];stem(k,realvalue2,'r.','.');ti
7、tle('Bartlett法估计功率谱方法得出的前100个自相关序列值');xlabel('k');ylabel('r_ess2[k]');legend('Bartlett法估计功率谱方法得出的前100个自相关序列值','真实的自相关序列');error2=r_ess2-realvalue2;mean_error_c=mean(error2)var_error_c=var(error2)%%y=zeros(1,1000);B=[1];A=[1,-0.9];y=filter(B,A,x);r_ess3=zeros(
8、1,100);fork=0:99forn=(k+1):1000r_ess3(k+1)=r_ess3(k+1)+y(n)*y(n-k);endr_ess3(k+1)=r_ess3(k+1)/1000;endfigure(4);stem(r_ess3,'.');title('y[n]前100个自相关序列估计值');xlabel('k'),ylabel('r_ess3(k)')