当前位置:文档之家› 用matlab做经典功率谱估计

用matlab做经典功率谱估计

用matlab做经典功率谱估计
用matlab做经典功率谱估计

用matlab做经典功率谱估计

经典功率谱估计

1、直接法:

直接法又称周期图法,它是把随机序列x(n)的N个观测数据视为一能量有限的序列,直接计算x(n)的离散傅立叶变换,得X(k),然后再取其幅值的平方,并除以N,作为序列x(n)真实功率谱的估计。

Matlab代码示例:

clear;

Fs=1000; %采样频率

n=0:1/Fs:1;

%产生含有噪声的序列

xn=cos(2*pi*40*n)+3*cos(2*pi*100*n)+randn(size(n));

window=boxcar(length(xn)); %矩形窗

nfft=1024;

[Pxx,f]=periodogram(xn,window,nfft,Fs); %直接法

plot(f,10*log10(Pxx));

2、间接法:

间接法先由序列x(n)估计出自相关函数R(n),然后对R(n)进行傅立叶变换,便得到x(n)的功率谱估计。

Matlab代码示例:

clear;

Fs=1000; %采样频率

n=0:1/Fs:1;

%产生含有噪声的序列

xn=cos(2*pi*40*n)+3*cos(2*pi*100*n)+randn(size(n));

nfft=1024;

cxn=xcorr(xn,'unbiased'); %计算序列的自相关函数

CXk=fft(cxn,nfft);

Pxx=abs(CXk);

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

k=index*Fs/nfft;

plot_Pxx=10*log10(Pxx(index+1));

plot(k,plot_Pxx);

3、改进的直接法:

对于直接法的功率谱估计,当数据长度N太大时,谱曲线起伏加剧,若N 太小,谱的分辨率又不好,因此需要改进。

3.1、Bartlett法

Bartlett平均周期图的方法是将N点的有限长序列x(n)分段求周期图再平均。

Matlab代码示例:

clear;

Fs=1000;

n=0:1/Fs:1;

xn=cos(2*pi*40*n)+3*cos(2*pi*100*n)+randn(size(n));

nfft=1024;

window=boxcar(length(n)); %矩形窗

noverlap=0; %数据无重叠

p=0.9; %置信概率

[Pxx,Pxxc]=psd(xn,nfft,Fs,window,noverlap,p);

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

k=index*Fs/nfft;

plot_Pxx=10*log10(Pxx(index+1));

plot_Pxxc=10*log10(Pxxc(index+1));

figure(1)

plot(k,plot_Pxx);

pause;

figure(2)

plot(k,[plot_Pxx plot_Pxx-plot_Pxxc plot_Pxx+plot_Pxxc]);

3.2、Welch法

Welch法对Bartlett法进行了两方面的修正,一是选择适当的窗函数

w(n),并再周期图计算前直接加进去,加窗的优点是无论什么样的窗函数均可使谱估计非负。二是在分段时,可使各段之间有重叠,这样会使方差减小。

Matlab代码示例:

clear;

Fs=1000;

n=0:1/Fs:1;

xn=cos(2*pi*40*n)+3*cos(2*pi*100*n)+randn(size(n));

nfft=1024;

window=boxcar(100); %矩形窗

window1=hamming(100); %海明窗

window2=blackman(100); %blackman窗

noverlap=20; %数据无重叠

range='half'; %频率间隔为[0 Fs/2],只计算一半的频率

[Pxx,f]=pwelch(xn,window,noverlap,nfft,Fs,range);

[Pxx1,f]=pwelch(xn,window1,noverlap,nfft,Fs,range);

[Pxx2,f]=pwelch(xn,window2,noverlap,nfft,Fs,range);

plot_Pxx=10*log10(Pxx);

plot_Pxx1=10*log10(Pxx1);

plot_Pxx2=10*log10(Pxx2);

figure(1)

plot(f,plot_Pxx);

pause;

figure(2)

plot(f,plot_Pxx1);

pause;

figure(3)

plot(f,plot_Pxx2);

补充:功率谱密度的定义

功率谱密度

根据维纳-欣钦定理,零均值平稳离散时间随机信号的自相关函数与其功率谱密度是一离散傅里叶变换对。

是一个零均值的平稳离散时间随机信号,其自相关函数为

(9.3.12)

满足绝对可和时,即

,则定义功率密度谱

为序列

的离散时间傅里叶变换(DFT),即

(9.3.13)

(9.3.14)

其中T采样间隔。这时序列的功率密度谱

在频域是以

为周期的周期性连续函数。其离散傅里叶反变换(IDFT)为

(9.3.15)

若令

,则有

(9.3.16)

为了分析方便, (9.3.14)式可以写成Z变换形式,即

(9.3.17)

Z的反变换为

(9.3.18)

互谱密度

同理,两个零均值平稳离散时间随机信号的互相关函数与其互谱密度也是一对离散傅里叶变换对。

(9.3.19)

(9.3.20)

经典功率谱和Burg法的功率谱估计

现代信号处理作业 实验题目: 设信号)()8.0cos(25.0)47.0cos()35.0cos()(321n v n n n n x ++++++=θπθπθπ,其中321,,θθθ是[]ππ,-内的独立随机变量,v(n)是单位高斯白噪声。 1.利用周期图法对序列进行功率谱估计。数据窗采用汉明窗。 2.利用BT 法对序列进行功率谱估计,自相关函数的最大相关长度为M=64,128,256,512采用BARTLETT 窗。 3.利用Welch 法对序列进行功率谱估计,50%重叠,采用汉明窗,L=256,128,64。 4.利用Burg 法对序列进行AR 模型功率谱估计,阶数分别为10,13. 要求每个实验都取1024个点,fft 作为谱估计,取50个样本序列的算术平均,画出平均的功率谱图。 实验原理: 1)。周期图法: 又称间接法,它把随机信号的N 个观察值x N (n)直接进行傅里叶变换,得到X N (e jw ),然后取其幅值的平方,再除以N ,作为对x (n )真实功率谱的估计。 2^ )(1)(jw e X N w P N per = , 其中∑-=-=1 )()(N n jwn N jw N e n x e X 2)。BT 法: 对于N 个观察值x(0),x(1),。。。,x(N-1),令x N (n)=a(n)x(n)。计算r x (m )为

∑--=-≤+= m N n N N x N m m n x n x N m r 10 1),()(1 )(,计算其傅里叶变换 ∑-=--≤= M M m jwm x BT N M e m r m v w P 1 ,)()()(^ ^ ,作为观察值的功率谱的估计。 其中v(m)是平滑窗。 3)。Welch 法: 假定观察数据是x(n),n=0,1,2...,N-1,现将其分段,每段长度为M,段与段之间的重叠为M-K,第i 个数据段经加窗后可表示为 1,...,1,0 )()()(-=+=M i iK n x n a n x i M 其中K 为一整数,L 为分段数,该数据段的周期图为 2)(1)(^w X MU w P i M i per =,其中∑-=-=1 0)()(M n j w n i M i M e n x w X 。由此得到平均周期图为 ∑-==10 ^_ )(1)(L i i per w P L w P 。其中归一化U 取∑-== 10 2 )(1M n n a M U 。 4)。Burg 法: 在约束条件下,使得)(2 1^^^ b f ρρρ+=极小化,其中,约束条件是它所得到的 各阶模型解要求满足Levison 递归关系。 仿真结果: 1.周期图法

功率谱估计方法的比较

功率谱估计方法的比较 摘要: 本文归纳了信号处理中关键的一种分析方法, 即谱估计方法。概述了频谱估计中的周期图法、修正的协方差法和伯格递推法的原理,并且对此三种方法通过仿真做出了对比。 关键词:功率谱估计;AR 模型;参数 引言: 谱估计是指用已观测到的一定数量的样本数据估计一个平稳随机信号的谱。由于谱中包含了信号的很多频率信息,所以分析谱、对谱进行估计是信号处理的重要容。谱估计技术发展 渊源很长,它的应用领域十分广泛,遍及雷达、声纳、通信、地质勘探、天文、生物医学工程等众多领域,其容、方法都在不断更新,是一个具有强大生命力的研究领域。谱估计的理论和方法是伴随着随机信号统计量及其谱的发展而发展起来的,最早的谱估计方法是建 立在基于二阶统计量, 即自相关函数的功率谱估计的方法上。功率谱估计的方法经历了经典谱估计法和现代谱估计法两个研究历程,在过去及现在相当长一段时间里,功率谱估计一直占据着谱估计理论里的核心位置。经典谱估计也成为线性谱估计,包括BT 法、周期图法。现代谱估计法也称为非线性普估计,包括自相关法、修正的协方差法、伯格(Burg )递推法、特征分解法等等。 原理: 经典谱估计方法计算简单,其主要特点是谱估计与任何模型参数无关,是一类非参数化的方法。它的主要问题是:由于假定信号的自相关函数在数据的观测区间以外等于零,因此估计出来的功率谱很难与信号的真实功率谱相匹配。在一般情况下,经典法的渐进性能无法给出实际功率谱的一个满意的近似,因而是一种低分辨率的谱估计方法。现代谱估计方法使用参数化的模型,他们统称为参数化功率谱估计,由于这类方法能够给出比经典法高得多的频率分辨率,故又称为高分辨率方法。下面分别介绍周期图法、修正的协方差法和伯格递推法。修正的协方差法和伯格递推法采用的模型均为AR 模型。 (1)周期图法 周期图法是先估计自相关函数, 然后进行傅里叶变换得到功率谱。假设随机信号x(n)只观测到一段样本数据,n=0, 1, 2, …, N-1。根据这一段样本数据估计自相关函数,如公式(1) 对(1)式进行傅里叶变换得到(2)式。 ∑--=+=1||0 *) ()(1 )(?m N n xx m n x n x N m r

matlab功率谱估计

功率谱估计及其MATLAB仿真 1经典功率谱估计 经典功率谱估计是将数据工作区外的未知数据假设为零,相当于数据加窗。经典功率谱估计方法分为:相关函数法(BT法)、周期图法以及两种改进的周期图估计法即平均周期图法和平滑平均周期图法,其中周期图法应用较多,具有代表性。 1.1相关函数法(BT法) 该方法先由序列x(n)估计出自相关函数R(n),然后对R(n)进行傅立叶变换,便得到x(n)的功率谱估计。当延迟与数据长度相比很小时,可以有良好的估计精度。 Matlab代码示例1(Btfangfa.M): Fs=500;%采样频率 n=0:1/Fs:1; xn=cos(2*pi*40*n)+3*cos(2*pi*90*n)+randn(size(n));%产生含有噪声的序列 nfft=512; cxn=xcorr(xn,'unbiased');%计算序列的自相关函数 CXk=fft(cxn,nfft); Pxx=abs(CXk); index=0:round(nfft/2-1); %Round towards nearest integer. k=index*Fs/nfft; plot_Pxx=10*log10(Pxx(index+1)); figure(1); plot(k,plot_Pxx); 结果如下: 1.2周期图法(periodogram) 周期图法是把随机序列x(n)的N个观测数据视为一能量有限的序列,直接计算x(n)的离散傅立叶变换得X(k),然后再取其幅值的平方,并除以N,作为序列x(n)真实功率谱的估计。Matlab代码示例2(PEriod.M): Fs=600; n=0:1/Fs:1;

matlab程序中功率谱分析的经典常用方法

一、直接法 clear;clc;close all; %清除变量;清屏;关闭当前图形窗口 Fs=1000; t=0:1/Fs:1; nfft=2048; %改变nfft的值可对比不同采样值时的谱估计效果 %****************生成信号、噪声**************% x1=cos(2*pi*40*t)+3*cos(2*pi*45*t);%信号 x2=randn(size(t)); %噪声 x3=x1+x2; %信号+噪声 [Pxx,f]=periodogram(x3,window,nfft,Fs); %直接法 plot(f,10*log10(Pxx)); title('直接法 nfft=2048'); set(gca,'xlim',[1 120]); ylabel('Am/dB'); xlabel('Frequency/Hz'); 二、间接法 Fs=1000;% 采样频率 n=0:1/Fs:1;% 产生含有噪声的序列 x1=cos(2*pi*40*n)+3*cos(2*pi*45*n);%信号x2=randn(size(n)); %噪声x3=x1+x2; %信号+噪声 nfft=1024; cxn=xcorr(x3);% 计算序列的自相关函数 CXk=fft(cxn); Pxx=abs(CXk); index=0:round(nfft/2-1); f=index*Fs/nfft; plot_Pxx=10*log10(Pxx(index+1)); figure (1) plot(f,plot_Pxx); title('间接法 nfft=1024');ylabel('Am/dB'); set(gca,'xlim',[1 120]); xlabel('Frequency/Hz'); 三、Bartlett法 clear;clc;close all; %清除变量;清屏;关闭当前图形窗口 Fs=1000; t=0:1/Fs:1; nfft=1024; %****************生成信号、噪声**************% x1=cos(2*pi*40*t)+3*cos(2*pi*45*t);%信号 x2=randn(size(t)); %噪声 x3=x1+x2; %信号+噪声 window=hamming(512); %海明窗 noverlap=0; %数据无重叠 p=0.9; %置信概率 [Pxx,Pxxc]=psd(x3,nfft,Fs,window,noverlap,p); index=0:round(nfft/2-1); k=index*Fs/nfft; plot_Pxx=10*log10(Pxx(index+1)); plot_Pxxc=10*log10(Pxxc(index+1)); figure(1) plot(k,plot_Pxx);title('Bartlett法海明窗');; set(gca,'xlim',[1120]);ylabel('Am/dB'); xlabel('Frequency/Hz'); 四、Welch法

经典功率谱估计方法实现问题的研究

1 随机信号的经典谱估计方法 估计功率谱密度的平滑周期图是一种计算简单的经典方法。它的主要特点是与任 何模型参数无关,是一类非参数化方法[4]。它的主要问题是:由于假定信号的自相关函数在数据观测区以外等于零,因此估计出来的功率谱很难与信号的真实功率谱相匹配。在一般情况下,周期图的渐进性能无法给出实际功率谱的一个满意的近似,因而是一种低分辨率的谱估计方法。本章主要介绍了周期图法、相关法谱估计(BT )、巴特利特(Bartlett)平均周期图的方法和Welch 法这四种方法。 2.1 周期图法 周期图法又称直接法。它是从随机信号x(n)中截取N 长的一段,把它视为能量有限x(n)真实功率谱)(jw x e S 的估计)(jw x e S 的抽样. 周期图这一概念早在1899年就提出了,但由于点数N一般比较大,该方法的计算量过大而在当时无法使用。只是1965年FFT 出现后,此法才变成谱估计的一个常用方法。周期图法[5]包含了下列两条假设: 1.认为随机序列是广义平稳且各态遍历的,可以用其一个样本x(n)中的一段 )(n x N 来估计该随机序列的功率谱。这当然必然带来误差。 2.由于对)(n x N 采用DFT ,就默认)(n x N 在时域是周期的,以及)(k x N 在频域是周期的。这种方法把随机序列样本x(n)看成是截得一段)(n x N 的周期延拓,这也就是周期图法这个名字的来历。与相关法相比,相关法在求相关函数)(m R x 时将 )(n x N 以外是数据全都看成零,因此相关法认为除)(n x N 外 x(n)是全零序列,这种处 理方法显然与周期图法不一样。 但是,当相关法被引入基于FFT 的快速相关后,相关法和周期图法开始融合。通过比较我们发现:如果相关法中M=N ,不加延迟窗,那么就和补充(N-1)个零的周期图法一样了。简单地可以这样说:周期图法是M=N 时相关法的特例。因此相关法和周期图法可结合使用。 2.2 相关法谱估计(BT )法

matlab实现功率谱密度分析psd

matlab实现功率谱密度分析psd及详细解说 功率谱密度幅值的具体含义?? 求信号功率谱时候用下面的不同方法,功率谱密度的幅值大小相差很大! 我的问题是,计算具体信号时,到底应该以什么准则决定该选用什么方法啊? 功率谱密度的幅植的具体意义是什么??下面是一些不同方法计算同一信号的matlab 程序!欢迎大家给点建议! 直接法: 直接法又称周期图法,它是把随机序列x(n)的N个观测数据视为一能量有限的序列,直接计算x(n)的离散傅立叶变换,得X(k),然后再取其幅值的平方,并除以N,作为序列x(n)真实功率谱的估计。 Matlab代码示例: clear; Fs=1000; %采样频率 n=0:1/Fs:1; %产生含有噪声的序列 xn=cos(2*pi*40*n)+3*cos(2*pi*100*n)+randn(size(n)); window=boxcar(length(xn)); %矩形窗 nfft=1024; [Pxx,f]=periodogram(xn,window,nfft,Fs); %直接法 plot(f,10*log10(Pxx)); 间接法: 间接法先由序列x(n)估计出自相关函数R(n),然后对R(n)进行傅立叶变换,便得到x(n)的功率谱估计。 Matlab代码示例: clear; Fs=1000; %采样频率 n=0:1/Fs:1; %产生含有噪声的序列 xn=cos(2*pi*40*n)+3*cos(2*pi*100*n)+randn(size(n)); nfft=1024; cxn=xcorr(xn,'unbiased'); %计算序列的自相关函数 CXk=fft(cxn,nfft); Pxx=abs(CXk);

功率谱估计

功率谱估计及其MATLAB仿真 詹红艳 (201121070630控制理论与控制工程) 摘要:从介绍功率谱的估计原理入手分析了经典谱估计和现代谱估计两类估计方法的原理、各自特点及在Matlab中的实现方法。 关键词:功率谱估计;周期图法;AR参数法;Matlab Power Spectrum Density Estimation and the simulation in Matlab Zhan Hongyan (201121070630Control theory and control engineering) Abstract:Mainly introduces the principles of classical PSD estimation and modern PSD estimation,discusses the characteristics of the methods of realization in Matlab.Moreover,It gives an example of each part in realization using Matlab functions. Keywords:PSDPstimation,Periodogram method,AR Parameter method,Matlab 1引言 现代信号分析中,对于常见的具有各态历经的平稳随机信号,不可能用清楚的数学关系式来描述,但可以利用给定的N个样本数据估计一个平稳随机信号的功率谱密度叫做功率谱估计(PSD)。它是数字信号处理的重要研究内容之一。功率谱估计可以分为经典功率谱估计(非参数估计)和现代功率谱估计(参数估计)。 功率谱估计在实际工程中有重要应用价值,如在语音信号识别、雷达杂波分析、波达方向估计、地震勘探信号处理、水声信号处理、系统辨识中非线性系统识别、物理光学中透镜干涉、流体力学的内波分析、太阳黑子活动周期研究等许多领域,发挥了重要作用。 Matlab是MathWorks公司于1982年推出的一套高性能的数值计算和可视化软件,人称矩 阵实验室,它集数值分析、矩阵运算、信号处理和图形显示于一体,构成了一个方便的、界面友好的用户环境,成为目前极为流行的工程数学分析软件。也为数字信号处理进行理论学习、工程设计分析提供了相当便捷的途径。本文的仿真实验中,全部在Matlab6.5环境下调试通过;随机序列由频率不同的正弦信号加高斯白噪声组成。 2经典功率谱估计 经典功率谱估计是将数据工作区外的未知数据假设为零,相当于数据加窗。经典功率谱估计方法分为:相关函数法(BT法)、周期图法以及两种改进的周期图估计法即平均周期图法和平滑平均周期图法,其中周期图法应用较多,具有代表性。 1.1相关函数法(BT法) 该方法先由序列x(n)估计出自相关函数R(n),然后对R(n)进行傅立叶变换,便得到x(n)的功率谱估计。当延迟与数据长度相比很小时,可以有良好的估计精度。 Matlab代码示例1: Fs=500;%采样频率 n=0:1/Fs:1;

(完整版)功率谱估计性能分析及Matlab仿真

功率谱估计性能分析及Matlab 仿真 1 引言 随机信号在时域上是无限长的,在测量样本上也是无穷多的,因此随机信号的能量是无限的,应该用功率信号来描述。然而,功率信号不满足傅里叶变换的狄里克雷绝对可积的条件,因此严格意义上随机信号的傅里叶变换是不存在的。因此,要实现随机信号的频域分析,不能简单从频谱的概念出发进行研究,而是功率谱[1]。 信号的功率谱密度描述随机信号的功率在频域随频率的分布。利用给定的 N 个样本数据估计一个平稳随机信号的功率谱密度叫做谱估计。谱估计方法分为两大类:经典谱估计和现代谱估计。经典功率谱估计如周期图法、自相关法等,其主要缺陷是描述功率谱波动的数字特征方差性能较差,频率分辨率低。方差性能差的原因是无法获得按功率谱密度定义中求均值和求极限的运算[2]。分辨率低的原因是在周期图法中,假定延迟窗以外的自相关函数全为0。这是不符合实际情况的,因而产生了较差的频率分辨率。而现代谱估计的目标都是旨在改善谱估计的分辨率,如自相关法和Burg 法等。 2 经典功率谱估计 经典功率谱估计是截取较长的数据链中的一段作为工作区,而工作区之外的数据假设为0,这样就相当将数据加一窗函数,根据截取的N 个样本数据估计出其功率谱[1]。 周期图法( Periodogram ) Schuster 首先提出周期图法。周期图法是根据各态历经的随机过程功率谱的定义进行的谱估计。 取平稳随机信号()x n 的有限个观察值(0),(1),...,(1)x x x n -,求出其傅里叶变换 1 ()()N j j n N n X e x n e ω ω---==∑ 然后进行谱估计

功率谱密度

t=0:0.0001:0.1; %时间间隔为0.0001,说明采样频率为10000Hz x=square(2*pi*1000*t); %产生基频为1000Hz的方波信号 n=randn(size(t)); %白噪声 f=x+n; %在信号中加入白噪声 figure(1); subplot(2,1,1); plot(f); %画出原始信号的波形图 ylabel('幅值(V)'); xlabel('时间(s)'); title('原始信号'); y=fft(f,1000); %对原始信号进行离散傅里叶变换,参加DFT采样点的个数为1000 subplot(2,1,2); m=abs(y); f1=(0:length(y)/2-1)'*10000/length(y);%计算变换后不同点对应的幅值plot(f1,m(1:length(y)/2)); ylabel('幅值的模'); xlabel('时间(s)'); title('原始信号傅里叶变换'); %用周期图法估计功率谱密度 p=y.*conj(y)/1000; %计算功率谱密度 ff=10000*(0:499)/1000; %计算变换后不同点对应的频率值 figure(2); plot(ff,p(1:500)); ylabel('幅值'); xlabel('频率(Hz)'); title('功率谱密度(周期图法)'); 功率谱估计在现代信号处理中是一个很重要的课题,涉及的问题很多。在这里,结合matlab,我做一个粗略介绍。功率谱估计可以分为经典谱估计方法与现代谱估计方法。经典谱估计中最简单的就是周期图法,又分为直接法与间接法。直接法先取N点数据的傅里叶变换(即频谱),然后取频谱与其共轭的乘积,就得到功率谱的估计;间接法先计

利用经典谱估计法估计信号的功率谱(随机信号)

随机信号 利用经典谱估计法估计信号的功率谱

作业综述: 给出一段信号“asd.wav”,利用经典谱估计法的原理,通过不同的谱估计方法,求出信号的功率谱密度函数。采用MATLAB语言,利用MATLAB语言强大的数据处理和数据可视化能力,通过GUI的对话框模板,使操作更为简便!在一个GUI界面中,同时呈现出不同方法产生出的功率谱。 这里给出了几种不同的方法:BT法,周期图法,平均法以及Welch法。把几种不同方法所得到的功率谱都呈现在一个界面中,便于对几种不同方法得到的功率谱作对比。 一.题目要求 给出一段信号及采样率,利用经典谱估计法估计出信号的功率谱。 二.基本原理及方法 经典谱估计的方法,实质上依赖于传统的傅里叶变换法。它是将数据工作区外的未知数据假设为零,相当于数据加窗,主要方法有BT法,周期图法,平均法以及Welch法。 1. BT法(Blackman-Tukey) ●理论基础: (1)随机序列的维纳-辛钦定理 由于随机序列{X(n)}的自相关函数Rx(m)=E[X(n)X(n+m)]定义在离散点m上,设取样间隔为,则可将随机序列的自相关函数用连续时间函数表示为 等式两边取傅里叶变换,则随机序列的功率谱密度 (2)谱估计 BT法是先估计自相关函数Rx(m)(|m|=0,1,2…,N-1),然后再经过离散傅里叶变换求的功率谱密度的估值。即 其中可有式得到。 2. 周期图法 ●理论基础: 周期图法是根据各态历经随机过程功率谱的定义来进行谱估计的。在前面我们已知,各态历经的连续随机过程的功率谱密度满足

式中 是连续随机过程第i 个样本的截取函数 的频谱。对应在随机序列中则有 由于随机序列中观测数据 仅在 的点上存在,则 的N 点离散傅里叶变换为: 因此有随机信号的观测数据 的功率谱估计值(称“周期图”)如下: 由于上式中的离散傅里叶变换可以用快速傅里叶变换计算,因此就可以估计出功率 谱。 3.平均法: 理论基础: 平均法可视为周期图法的改进。周期图经过平均后会使它的方差减少,达到一致估计的目的,有一个定理:如果 , , , 是不相关的随机变量,且都有个均值 及其方差 ,则可以证明它们的算术平均的均值为 ,方差为 。 由定理可见:具有 个独立同分布随机变量平均的方差,是单个随机变量方差的 , 当 时,方差 ,可以达到一致估计的目的。因此,将 个独立的估计量经过算术 平均后得到的估计量的方差也是原估计量方差的 。 平均图法即是将数据 , , 分段求周期图法后再平均。例如,给定N=1000个数据样本(平均法适用于数据量大的场合),则可以将它分成10个长度为100的小段,分别计算每一段的周期图 ()()2 1001100,100(1) 1 ,1,2,```,10100 l j l n l G w X e l ω-=-= =∑ 然后将这10个周期图加以平均得谱估计值: ()() 10 100100,1 110l l G w G w ==∑ 由于这10小段的周期图取决于同一个过程,因而其均值相同。若这10个小段的周期图是统计独立的,则这10个小段平均之后的方差却是单段方差的 。

功率谱估计介绍(介绍了matlab函数)

功率谱估计介绍 谱估计在现代信号处理中是一个很重要的课题,涉及的问题很多。在这里,结合matlab,我做一个粗略介绍。功率谱估计可以分为经典谱估计方法与现代谱估计方法。经典谱估计中最简单的就是周期图法,又分为直接法与间接法。直接法先取N点数据的傅里叶变换(即频谱),然后取频谱与其共轭的乘积,就得到功率谱的估计;间接法先计算N点样本数据的自相关函数,然后取自相关函数的傅里叶变换,即得到功率谱的估计.都可以编程实现,很简单。在matlab中,周期图法可以用函数periodogram实现。 周期图法估计出的功率谱不够精细,分辨率比较低。因此需要对周期图法进行修正,可以将信号序列x(n)分为n个不相重叠的小段,分别用周期图法进行谱估计,然后将这n段数据估计的结果的平均值作为整段数据功率谱估计的结果。还可以将信号序列x(n)重叠分段,分别计算功率谱,再计算平均值作为整段数据的功率谱估计。 种称为分段平均周期图法,一般后者比前者效果好。加窗平均周期图法是对分段平均周期图法的改进,即在数据分段后,对每段数据加一个非矩形窗进行预处理,然后在按分段平均周期图法估计功率谱。相对于分段平均周期图法,加窗平均周期图法可以减小频率泄漏,增加频峰的宽度。welch法就是利用改进的平均周期图法估计估计随机信号的功率谱,它采用信号分段重叠,加窗,FFT 等技术来计算功率谱。与周期图法比较,welch法可以改善估计谱曲线的光滑性,大大提高谱估计的分辨率。matlab中,welch法用函数psd实现。调用格式如下: [Pxx,F] = PSD(X,NFFT,Fs,WINDOW,NOVERLAP) X:输入样本数据 NFFT:FFT点数 Fs:采样率 WINDOW:窗类型 NOVERLAP,重叠长度 现代谱估计主要针对经典谱估计分辨率低和方差性不好提出的,可以极大的提高估计的分辨率和平滑性。可以分为参数模型谱估计和非参数模型谱估计。参数模型谱估计有AR模型,MA模型,ARMA模型等;非参数模型谱估计有最小方差法和MUSIC法等。由于涉及的问题太多,这里不再详述,可以参考有关资料。matlab中,现代谱估计的很多方法都可以实现。music方法用pmusic命令实现;pburg函数利用burg法实现功率谱估计;pyulear函数利用yule-walker算法实现功率谱估计等等。 另外,sptool工具箱也具有功率谱估计的功能。窗口化的操作界面很方便,而且有多种方法可以选择 在海杂波抑制的研究中,对海杂波谱分析一定要用到谱估计理论,一定得花时间学好!

功率谱密度估计方法的MATLAB实现

功率谱密度估计方法的MATLAB实现 在应用数学和物理学中,谱密度、功率谱密度和能量谱密度是一个用于信号的通用概念,它表示每赫兹的功率、每赫兹的能量这样的物理量纲。在物理学中,信号通常是波的形式,例如电磁波、随机振动或者声波。当波的频谱密度乘以一个适当的系数后将得到每单位频率波携带的功率,这被称为信号的功率谱密度(power spectral density, PSD)或者谱功率分布(spectral power distribution, SPD)。功率谱密度的单位通常用每赫兹的瓦特数(W/Hz)表示,或者使用波长而不是频率,即每纳米的瓦特数(W/nm)来表示。信号的功率谱密度当且仅当信号是广义的平稳过程的时候才存在。如果信号不是平稳过程,那么自相关函数一定是两个变量的函数,这样就不存在功率谱密度,但是可以使用类似的技术估计时变谱密度。信号功率谱的概念和应用是电子工程的基础,尤其是在电子通信系统中,例如无线电和微波通信、雷达以及相关系统。因此学习如何进行功率谱密度估计十分重要,借助于Matlab工具可以实现各种谱估计方法的模拟仿真并输出结果。下面对周期图法、修正周期图法、最大熵法、Levinson递推法和Burg法的功率谱密度估计方法进行程序设计及仿真并给出仿真结果。 以下程序运行平台:Matlab R2015a(8.5.0.197613) 一、周期图法谱估计程序 1、源程序 Fs=100000; %采样频率100kHz N=1024; %数据长度N=1024 n=0:N-1; t=n/Fs; xn=sin(2000*2*pi*t); %正弦波,f=2000Hz Y=awgn(xn,10); %加入信噪比为10db的高斯白噪声 subplot(2,1,1); plot(n,Y) title('信号') xlabel('时间');ylabel('幅度');

AR功率谱估计MatlAB

AR模型的谱估计是现代谱估计的主要内容 AR模型的谱估计是现代谱估计的主要内容。 1.AR 模型的Yule—Walker方程和Levinson-Durbin递推算法:在MATLAB中,函数levinson和aryule都采用 Levinson-Durbin递推算法来求解AR模型的参数a1,a2,……,ap及白噪声序列的方差,只是两者的输入参数不同,它们的格式为: A=LEVINSON(R,ORDER) A=ARYULE(x,ORDER) 两函数均为定阶ORDER的求解,但是函数levinson的输入参数要求是序列的自相关函数,而函数aryule的输入参数为采样序列。 下面语句说明函数levinson和函数aryule的功能是相同的: 例子: randn('seed',0) a=[1 0.1 0.2 0.3 0.4 0.5]; x=impz(1,a,20)+randn(20,1)/20; r=xcorr(x,'biased'); r(1:length(x)-1)=[]; A=levinson(r,5) B=aryule(x,5) 2.Burg算法: 格式为:A=ARBURG(x,ORDER); 其中x为有限长序列,参数ORDER用于指定AR 模型的阶数。以上面的例子为例: randn('seed',0) a=[1 0.1 0.2 0.3 0.4 0.5]; x=impz(1,a,20)+randn(20,1)/20; A=arburg(x,5)

3.改进的协方差法: 格式为:A=ARMCOV(x,ORDER); 该函数用来计算有限长序列x(n)的ORDER阶AR 模型的参数。例如:输入下面语句: randn('seed',0) a=[1 0.1 0.2 0.3 0.4 0.5]; x=impz(1,a,20)+randn(20,1)/20; A=armcov(x,5) AR模型阶数P的选择: AR 模型阶数P一般事先是不知道的,需要事先选定一个较大的值,在递推的过程中确定。在使用Levinson—Durbin递推方法时,可以给出由低阶到高阶的每一组参数,且模型的最小预测误差功率Pmin(相当于白噪声序列的方差)是递减的。直观上讲,当预测误差功率P达到指定的希望值时,或是不再发生变化时,这时的阶数即是应选的正确阶数。 因为预测误差功率P是单调下降的,因此,该值降到多少才合适,往往不好选择。比较常见的准则是: 最终预测误差准则:FPE(r)=Pr{[N+(r+1)]/ [N-(r+1)]} 信息论准则:AIC(r)=N*log(Pr)+2*r 上面的N为有限长序列x(n)的长度,当阶数r由1增加时,FPE(r) 和AIC(r)都将在某一r处取得极小值。将此时的r定为最合适的阶数p。 MATLAB中AR模型的谱估计的函数说明: 1. Pyulear函数: 功能:利用Yule--Walker方法进行功率谱估计. 格式: Pxx=Pyulear(x,ORDER,NFFT) [Pxx,W]=Pyulear(x,ORDER,NFFT) [Pxx,W]=Pyulear(x,ORDER,NFFT,Fs) Pyulear(x,ORDER,NFFT,Fs,RANGE,MAGUNITS)

功率谱图应用

1.基本方法 周期图法是直接将信号的采样数据x(n)进行Fourier变换求取功率谱密度估计的方法。假定有限长随机信号序列为x(n)。它的Fourier变换和功率谱密度估计存在下面的关系: 式中,N为随机信号序列x(n)的长度。在离散的频率点f=kΔf,有: 其中,FFT[x(n)]为对序列x(n)的Fourier变换,由于FFT[x(n)]的周期为N,求得的功率谱估计以N为周期,因此这种方法称为周期图法。下面用例子说明如何采用这种方法进行功率谱 用有限长样本序列的Fourier变换来表示随机序列的功率谱,只是一种估计或近似,不可避免存在误差。为了减少误差,使功率谱估计更加平滑,可采用分段平均周期图法(Bartlett法)、加窗平均周期图法(Welch 法)等方法加以改进。 2. 分段平均周期图法(Bartlett法) 将信号序列x(n),n=0,1,…,N-1,分成互不重叠的P个小段,每小段由m个采样值,则P*m=N。对每个小段信号序列进行功率谱估计,然后再取平均作为整个序列x(n)的功率谱估计。 平均周期图法还可以对信号x(n)进行重叠分段,如按2:1重叠分段,即前一段信号和后一段信号有一半是重叠的。对每一小段信号序列进行功率谱估计,然后再取平均值作为整个序列x(n)的功率谱估计。这两种方法都称为平均周期图法,一般后者比前者好。程序运行结果为图9-5,上图采用不重叠分段法的功率谱估计,下图为2:1重叠分段的功率谱估计,可见后者估计曲线较为平滑。与上例比较,平均周期图法功率谱估计具有明显效果(涨落曲线靠近0dB)。 3.加窗平均周期图法 加窗平均周期图法是对分段平均周期图法的改进。在信号序列x(n)分段后,用非矩形窗口对每一小段信号序列进行预处理,再采用前述分段平均周期图法进行整个信号序列x(n)的功率谱估计。由窗函数的基本知识(第7章)可知,采用合适的非矩形窗口对信号进行处理可减小“频谱泄露”,同时可增加频峰的宽度,从而提高频谱分辨率。 其中上图采用无重叠数据分段的加窗平均周期图法进行功率谱估计,而下图采用重叠数据分段的加窗平均周期图法进行功率谱估计,显然后者是更佳的,信号谱峰加宽,而噪声谱均在0dB附近,更为平坦(注意采用无重叠数据分段噪声的最大的下降分贝数大于5dB,而重叠数据分段周期图法噪声的最大下降分贝数小于5dB)。 4. Welch法估计及其MATLAB函数 Welch功率谱密度就是用改进的平均周期图法来求取随机信号的功率谱密度估计的。Welch 法采用信号重叠分段、加窗函数和FFT算法等计算一个信号序列的自功率谱估计(PSD如上例中的下半部分的求法)和两个信号序列的互功率谱估计(CSD)。 MATLAB信号处理工具箱函数提供了专门的函数PSD和CSD自动实现Welch法估计,而不需要自己编程。 (1)函数psd利用Welch法估计一个信号自功率谱密度,函数调用格式为: [Pxx[,f]]=psd(x[,Nfft,Fs,window,Noverlap,’dflag’]) 式中,x为信号序列;Nfft为采用的FFT长度。这一值决定了功率谱估计速度,当Nfft采用2的幂时,程序采用快速算法;Fs为采样频率;Window定义窗函数和x分段序列的长度。窗函数长度必须小于或等于Nfft,否则会给出错误信息;Noverlap为分段序列重叠的采样

功率谱估计的MATLAB实现

实验功率谱估计 实验目的: 1、掌握最大熵谱估计的基本原理。 2、了解最终预测误差(FPE)准则。 3、掌握周期图谱估计的基本原理。 4、掌握传统谱估计中直接法与间接法之间的关系。 5、复习快速傅里叶变换与离散傅里叶变换之间关系。 实验内容: 1、设两正弦信号的归一化频率分别为0.175和0.20,用最大熵法编程计算信噪比S/N=30dB、N=32点时该信号的最大熵谱估计结果。 2、用周期图法编程计算上述信号的谱估计结果。 程序示例: 1、最大熵谱估计 clc; N=32; SNR=30; fs=1; t=1:N; t=t/fs; y=sin(2*pi*0.175*t)+sin(2*pi*0.20*t); x = awgn(y,SNR); M=1; P(M)=0; Rx(M)=0; for n=1:N P(M)=P(M)+(abs(x(n)))^2; ef(1,n)=x(n); eb(1,n)=x(n); end P(M)=P(M)/N; Rx(M)=P(M); M=2;

A=0; D=0; for n=M:N A=A+ef(M-1,n)*eb(M-1,n-1); D=D+(abs(ef(M-1,n)))^2+(abs(eb(M-1,n-1)))^2; end xishu=-2*A/D; a(M-1,M-1)=-2*A/D; P(M)=P(M-1)*(1-(abs(xishu))^2); FPE(M-1)=P(M)*(N+M)/(N-M); TH=FPE(M-1); for n=M:N ef(M,n)=ef(M-1,n)+xishu*eb(M-1,n-1); eb(M,n)=eb(M-1,n-1)+xishu*ef(M-1,n); end M=M+1; A=0; D=0; for n=M:N A=A+ef(M-1,n)*eb(M-1,n-1); D=D+(abs(ef(M-1,n)))^2+(abs(eb(M-1,n-1)))^2; end xishu=-2*A/D; a(M-1,M-1)=-2*A/D; P(M)=P(M-1)*(1-(abs(xishu))^2); FPE(M-1)=P(M)*(N+M)/(N-M); for m=1:M-2 a(M-1,m)=a(M-2,m)+xishu*a(M-2,M-1-m); end while FPE(M-1)

功率谱估计浅谈汇总

功率谱估计浅谈 摘要:介绍了几种常用的经典功率谱估计与现代功率谱估计的方法原理,并利用Matlab对随机信号进行功率谱估计,对两种方法做出比较,分别给出其优缺点。关键词:功率谱;功率谱估计;经典功率谱估计;现代功率谱估计 前言 功率谱估计是从频率分析随机信号的一种方法,一般分成两大类:一类是经典谱估计;另一类是现代谱估计。由于经典谱估计中将数据工作区以外的未知数据假设为零,这相当于数据加窗,导致分辨率降低和谱估计不稳定。现代谱估计则不再简单地将观察区外的未知数据假设为零,而是先将信号的观测数据估计模型参数,按照求模型输出功率的方法估计信号功率谱,回避了数据观测区以外的数据假设问题。 周期图、自相关法及其改进方法(Welch)为经典(非参数)谱估计方法, 其以相关和傅里叶变换为基础,对于长数据记录较适用,但无法根本解决频率分辨率低和谱估计稳定性的问题,特别是在数据记录很短的情况下,这一问题尤其突出。以随机过程的参数模型为基础的现代参数法功率谱估计具有更高的频率分辨率和更好的适应性,可实现信号检测或信噪分离,对语音、声纳雷达、电磁波及地震波等信号处理具有重要意义,并广泛应用于通信、自动控制、地球物理等领域。在现代参数法功率谱估计方法中,比较有效且实用的是AR模型法,Burg谱估计法,现代谱估计避免了计算相关,对短数据具有更强的适应性,从而弥补了经典谱估计法的不足,但其也有一些自身的缺陷。 下面就给出这两类谱估计的简单原理介绍与方法实现。 经典谱估计法 经典法是基于传统的傅里叶变换。本文主要介绍一种方法:周期图法。 周期图法 由于对信号做功率谱估计,需要用计算机实现,如果是连续信号,则需要变换为离散信号。下面讨论离散随机信号序列的功率谱问题。 连续时间随机信号的功率谱密度与自相关函数是一对傅里叶变换对,即:

matlab求功率谱

matlab实现经典功率谱估计 fft做出来是频谱,psd做出来是功率谱;功率谱丢失了频谱的相位信息;频谱不同的信号其功率谱是可能相同的;功率谱是幅度取模后平方,结果是个实数 matlab中自功率谱密度直接用psd函数就可以求,按照matlab的说法,psd能实现Welch法估计,即相当于用改进的平均周期图法来求取随机信号的功率谱密度估计。psd求出的结果应该更光滑吧。 1、直接法: 直接法又称周期图法,它是把随机序列x(n)的N个观测数据视为一能量有限的序列,直接计算x(n)的离散傅立叶变换,得X(k),然后再取其幅值的平方,并除以N,作为序列x(n)真实功率谱的估计。 Matlab代码示例: clear; Fs=1000; %采样频率 n=0:1/Fs:1; %产生含有噪声的序列 xn=cos(2*pi*40*n)+3*cos(2*pi*100*n)+randn(size(n)); window=boxcar(length(xn)); %矩形窗 nfft=1024; [Pxx,f]=periodogram(xn,window,nfft,Fs); %直接法 plot(f,10*log10(Pxx)); 2、间接法: 间接法先由序列x(n)估计出自相关函数R(n),然后对R(n)进行傅立叶变换,便得到x(n)的功率谱估计。 Matlab代码示例: clear; Fs=1000; %采样频率 n=0:1/Fs:1; %产生含有噪声的序列 xn=cos(2*pi*40*n)+3*cos(2*pi*100*n)+randn(size(n)); nfft=1024; cxn=xcorr(xn,'unbiased'); %计算序列的自相关函数 CXk=fft(cxn,nfft); Pxx=abs(CXk); index=0:round(nfft/2-1); k=index*Fs/nfft;

经典功率谱估计

Classical Power Spectrum Estimation Abstract With the increasing need of spectrum, various computational methods and algorithms have been proposed in the literature. Keeping these views and facts of spectrum shaping capability by FRFT based windows we have proposed a closed form solution for Bartlett window in fractional domain. This may be useful for analysis of different upcoming generations of mobile communication in a better way which are based on OFDM technique. Moreover, it is useful for real-time processing of non-stationary signals. As per our best knowledge the closed form solution mentioned in this paper have not been reported in the literature till date.This paper focuses on classical period spectral estimation and moderu spectral estimation based on Burg algorithm. By comparing various algorithms in computational complexity and resolution, Burg algorithm was used to signal processing finally. Experimental and simulation results indicated that digital signal processing system would meet system requirements for measurement accuracy. Keywords periodogram spectral estimation ; Burg algorithm I. INTRODUCTION When we expand the frequency response of any digital filter by means of Fourier series, we get impulse response of the digital filter in the form of coefficients of the Fourier series. But the resultant filter is unrealizable and also its impulse response in infinite in duration. If we directly truncate this series to a finite number of points we have to face with well known Gibbs phenomenon, so we modify the Fourier coefficients by

相关主题
文本预览
相关文档 最新文档