现代数字信号处理实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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);

相关文档
最新文档