现代数字信号处理实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
现代数字信号处理实验报告
1、估计随机信号的样本自相关序列。先以白噪声()x n 为例。 (a) 产生零均值单位方差高斯白噪声的1000个样点。 (b) 用公式:
999
1ˆ()()()1000x n r k x n x n k ==-∑
估计()x n 的前100个自相关序列值。与真实的自相关序列()()x r k k δ=相比较,讨论你的估计的精确性。
(c) 将样本数据分成10段,每段100个样点,将所有子段的样本自相关的平均值作为()x n 自相关的估值,即:
999
00
1ˆ()(100)(100) , 0,1,...,991000x m n r k x n m x n k m k ===+-+=∑∑
与(b)的结果相比,该估计值有什么变化?它更接近真实自相关序列
()()x r k k δ=吗?
(d) 再将1000点的白噪声()x n 通过滤波器1
1
()10.9H z z -=
-产生1000点的y (n ),
试重复(b)的工作,估计y (n )的前100个自相关序列值,并与真实的自相关序列()y r k 相比较,讨论你的估计的精确性。
仿真结果:
(a)
图1.1 零均值单位方差高斯白噪声的1000个样本点
分析图1.1:这1000个样本点是均值近似为0,方差为1的高斯白噪声。(b)
图1.2 ()
x n的前100个自相关序列值
分析上图可知:当k=0时取得峰值,且峰值大小比较接近于1,而当k≠0时估计的自相关值在0附近有小幅度的波动,这与真实自相关序列r
(k)=δ(k)
x
比较接近,k≠0时估计值非常接近0,说明了估计的结果是比较精确的。
(c)
图1.3基于Bartlett 法的前100个自相关序列值
与(b)的结果相比,同样在k=0时达到峰值,k ≠0时0值附近上下波动;估计值的方差比较小,随着k 的增大波动幅度逐渐变小,在k 较大时它更接近真实自相关序列()()x r k k δ=。即采用分段方法得到的自相关序列的估计值更加接近r x (k)=δ(k)。分析仿真图也可以看出:将样本数据分段,将所有子段的样本自相关的平均值作为()x n 自相关的估值时,可以有效的降低自相关估计的方差,而分段样本估计的优点在于,估计自相关序列与实际自相关序列的方差减小,且当分段数越大,估计值越趋向于无偏估计。 (d)
图1.4 y(n)的前100个自相关序列值与真实值的对比从图中可以看出在k=0时估计与真实的自相关序列之间有较小的误差,随着k的增大,估计得到的值有较大的波动,存在一定误差。
源程序
clc
clear
%%产生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)
%%
for k=0:99
for n=k+1:1000
y_ess(n)=x(n)*x(n-k);
end
r_ess(k+1)=sum(y_ess)/1000;
end
figure(2);
k=[0:99];
stem(k,r_ess,'.');
title('根据样本点估计出的前100自相关序列值');
xlabel('k');ylabel('r_ess[k]');
hold on;
realvalue=[1,zeros(1,99)];
stem(k,realvalue,'r','.');
legend('根据样本点估计出的前100自相关序列值','真实的自相关序列');
error1=r_ess-realvalue;
mean_error_b=mean(error1)
var_error_b=var(error1)
%%
for k=0:99
for m=0:9
for n=k+1:100
y_ess2(m+1,n)=x(n+100*m)*x(n-k+100*m);
end
end
r_ess2(k+1)=sum(sum(y_ess2))/1000;
end
figure(3);
k=0:99;
stem(k,r_ess2,'b.');
hold on;
realvalue2=[1,zeros(1,99)];
stem(k,realvalue2,'r.','.');
title('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);