好文档 - 专业文书写作范文服务资料分享网站

自己编写算法的功率谱密度的三种matlab实现方法

天下 分享 时间: 加入收藏 我要投稿 点赞

文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.

功率谱密度的三种matlab实现方法

一:实验目的:

(1)掌握三种算法的概念、应用及特点; (2)了解谱估计在信号分析中的作用;

(3) 能够利用burg法对信号作谱估计,对信号的特点加以分析。 二;实验内容:

(1)简单说明三种方法的原理。

(2)用三种方法编写程序,在matlab中实现。

(3)将计算结果表示成图形的形式,给出三种情况的功率谱图。 (4)比较三种方法的特性。 (5)写出自己的心得体会。 三:实验原理: 1.周期图法:

周期图法又称直接法。它是从随机信号x(n)中截取N长的一段,把它视为能量有限x(n)真实功率谱Sx(ejw)的估计Sx(ejw)的抽样.

认为随机序列是广义平稳且各态遍历的,可以用其一个样本x(n)中的一段xN(n)来估计该随机序列的功率谱。这当然必然带来误差。由于对xN(n)采用DFT,就默认xN(n)在时域是周期的,以及xN(k)在频域是周期的。这种方法把随机序列样本x(n)看成是截得一段xN(n)的周期延拓,这也就是周期图法这个名字的来历。 2.相关法(间接法):

1

文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.

这种方法以相关函数为媒介来计算功率谱,所以又叫间接法。这种方法的具体步骤是:

第一步:从无限长随机序列x(n)中截取长度N的有限长序列列

xN(n)

第二步:由N长序列xN(n)求(2M-1)点的自相关函数Rx(m)序列。

1Rx(m)?N???xn?0N?1N(n)xN(n?m)

(2-1) 这里,m=-(M-1)…,-1,0,1…,M-1,MN,Rx(m)是双边序列,但是由自相关函数的偶对称性式,只要求出m=0,。。。,M-1的傅里叶变换,另一半也就知道了。

第三步:由相关函数的傅式变换求功率谱。即

Sx(e)??jwM?1?Xm??(M?1)?R(m)e?jwm

以上过程中经历了两次截断,一次是将x(n)截成N长,称为加数据窗,一次是将x(n)截成(2M-1)长,称为加延迟窗。因此所得的功率谱仅是近似值,也叫谱估计,式中的Sx(ejw)代表估值。一般取M<

AR模型功率谱估计又称为自回归模型,它是一个全极点的模型,要

2

文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.

利用AR模型进行功率谱估计须通过levinson_dubin递推算法由 Yule-Walker方程求得AR的参数:σ2,α1α2…αp。

计算中,预测系数必须满足Lenvinson-Durbin递推关系,并且可直接计算而无需首先计算自相关系数。这种方法的优点就是对未知数据不需要做任何假设,估计精度较高。其缺点是在分析噪声中的正弦信号时,会引起谱线分裂,且谱峰的位置和正弦信号的相位有很大的关系。

Burg算法是使前向预测误差和后向预测误差均方误差之和最小来求取Km的,它不对已知数据段之外的数据做认为假设。计算m阶预测误差的递推表示公式如下: 求取反射系数的公式如下:

对于平稳随机过程,可以用时间平均代替集合平均,因此上式可写成: 这样便可求得AR模型的反射系数。

将m阶AR模型的反射系数和m-1阶AR模型的系数代入到Levinson关系式中,可以求得AR模型其他的p-1个参数。 Levinson关系式如下:

m阶AR模型的第m+1个参数G,G2?ρm其中ρm是预测误差功率,可由

2)求得。 递推公式ρm?ρm?1(1?Km易知为进行该式的递推,必须知道0阶AR模型误差功率ρ0, 可知该式由给定序列易于求得。完成上述过程,即最终求得了表征该随机信号的AR模型的p+1个参数 。然后根据 即可求得该随机信号的功率谱密度。

3

文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.

四.实验内容: 实验程序及实验图像 周期法:

Fs=1000;

nfft=10000; %2^n n=0:Fs;

x=sin(2*pi*0.2*n)+sqrt(2)*sin(2*pi*0.213*n)+randn(size(n)); X=fft(x,nfft);

Pxx=abs(X).^2/length(n); %求解PSD t=0:round(nfft/2-1); f=t/nfft;

P=10*log10(Pxx(t+1)); %纵坐标的单位为dB plot(f,P); grid on

nfft=200

nfft=1024

nfft=10000

相关法:

clear;

Fs=1000; %采样频率

n=0:Fs;%产生含有噪声的序列 nfft=1024;

xn=sin(2*pi*0.2*n)+sqrt(2)*sin(2*pi*0.213*n)+randn(size(n)); cxn=xcorr(xn,'unbiased'); %计算序列的自相关函数 CXk=fft(cxn,nfft); %求出功率谱密度 Pxx=abs(CXk);

index=0:round(nfft/2-1); f=index/nfft;

plot_Pxx=10*log10(Pxx(index+1)); plot(f,plot_Pxx); xlabel('频率'); ylabel('功率/DB'); grid on;

nfft=256 nfft=1024

4

文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.

Burg法:

clear

Fs=1000 %设置关键变量,可通过调节这些变量观察不同效果 f1=0.2; f2=0.213;

nfft=128; %取样点数

p=50; %阶数p应该选择在N/3

f=0:1/1000:0.5; n=1:Fs;

xn=sin(2*pi*f1*n)+sqrt(2)*sin(2*pi*f2*n)+randn(size(n)); figure;

plot(n,xn); title('burg时域'); xn= xn(:); N=length(xn); ef = xn; eb = xn; a = 1; for l=1:p

efp = ef(2:end);%m-1阶前向预测误差 ebp = eb(1:end-1);%m-1阶后向预测误差 num = -2.*ebp'*efp;%1km分子多项式

den = efp'*efp+ebp'*ebp;%1km的分母多项式 k(l) = num ./ den;%计算反射系数 % 更新前向和后向预测误差

ef = efp + k(l)*ebp;%各阶前向预测误差 eb = ebp + k(l)*efp;%各阶后向预测误差 % 计算模型参数

a=[a;0] + k(l)*[0;conj(flipud(a))];%AR模型参数a end

a1=a(2:p+1);

for i=1:length(f) %循环递推 sum=0; for k=1:p

sum=sum+a1(k)*exp(-m*2*pi*f(i)*k); end

Pbrg(i)=delta/(abs(1+sum))^2;

Pbrg_f(i)=10*log10(Pbrg(i));%求出功率谱 end figure

plot(f,Pbrg_f);

5

自己编写算法的功率谱密度的三种matlab实现方法

文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.功率谱密度的三种matlab实现方法一:实验目的:(1)掌握三种算法的概念、应用及特点;(2)了解谱估计在信号分析中的作用;(3)能够利用burg法对信号作谱估计,对信号的特点加以分析。二;实验内容:(1)简单说明三种方法的原理。
推荐度:
点击下载文档文档为doc格式
1t7lm4fp814zk8m0hvkq6k2tg1xu6l00s36
领取福利

微信扫码领取福利

微信扫码分享