现代数字信号处理实验报告 下载本文

[a(1) a(2) a(3) a(4)]=[-0.7174-1.7952-0.6387-0.8167]

图2.4 Yule-Walker法估计的功率谱与真实功率谱对比

Yule-Walker法(自相关法)估计的参数,其系数的符号正确,但数值大小相差较大,并且多次实验的相差值也很大,参数估计的精度远远不够。因此从图2.4中也能看出,该方法得到功率谱与真实的谱相差很大 (e)协方差法

图2.5 协方差法估计的功率谱与真实功率谱对比

采用协方差法估计的参数,其系数与真实的系数非常接近,该方法能够较精确的估计出功率谱。 (f)修正协方差

图2.6 修正的协方差法估计的功率谱与真实功率谱对比

采用修正的协方差法估计的参数,其系数虽然没有协方差法和burg法那么精确,但是估计误差也很小。从图2.6中也能看出,该方法能够较精确的估计出功率谱。 (g)Burg算法

图2.7 burg法估计的功率谱与真实功率谱对比

采用burg估计的参数,其系数几乎等于真实的系数,分析图2.7中也能看出,

该方法非常精确的估计出功率谱,几乎与真实的功率谱曲线重合。 源程序: clc;clear; N=256; NN=20000;

v1=normrnd(0,1,50,NN); v=v1(:,1:N); r=zeros(1,N); r1=zeros(1,N); w=0:2*pi/100:2*pi; P=zeros(1,length(w)); PP1=zeros(1,length(w)); PP2=zeros(1,length(w)); PP3=zeros(1,length(w)); PP4=zeros(1,length(w));

for s=1:50

x1=filter([1],[1,0.7348,1.8820,0.7057,0.8851],v1(s,:)); x=x1(1:N);

for k=1:N rx(k)=0; for n=k:N

rx(k)=rx(k)+x(n)*x(n-(k-1)); end

rx(k)=rx(k)/(N); end r=r+rx; for k=1:N rx1(k)=0; for n=k:NN

rx1(k)=rx1(k)+x1(n)*x1(n-(k-1)); end

rx1(k)=rx1(k)/(NN); end r1=r1+rx1;

for i=1:length(w) P(i)=P(i)+rx(1); for n=2:N

P(i)=P(i)+rx(n)*exp(-j*(n-1)*w(i))+rx(n)*exp(j*(n-1)*w(i)); end end

A=toeplitz(rx(1:4)',rx(1:4)); B=-rx(2:5)'; Ap=A\\B; b0=rx(1); for i=1:4

b0=b0+Ap(i)*rx(i+1); end

b0=sqrt(b0); for i=1:length(w) P1(i)=1; for k=1:4

P1(i)=P1(i)+Ap(k)*exp(-j*k*w(i)); end

P1(i)=b0^2/abs(P1(i))^2; end

PP1=PP1+P1; A=[]; for k=1:4 c=[]; for l=1:4 rr=0; for n=5:N

rr=rr+x(n-l)*x(n-k); end c=[c;rr]; end A=[A c];