AR功率谱估计MatlAB
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一般事先是不知道的,需要事先选定一个较大的值,在递推的过程中确定。
MATLAB中AR模型功率谱估计中AR阶次估计的实现

MATLA中AR模型功率谱估计中AR阶次估计的实现(最近看了几个关于功率谱的问题,有关AR模型的谱估计,在此分享一下,希望大家不吝指正)(声明:本文内容摘自我的毕业论文——心率变异信号的预处理及功率谱估计)(按:AR模型功率谱估计是对非平稳随机信号功率谱估计的常用方法,但是其模型阶次的估计,除了HOSAE具箱里的arorder函数外,没有现成的函数可用,arorder函数是基于矩阵SVD分解的阶次估计方法,为了比较各种阶次估计方法的区别,下面的函数使用了’FPE','AIC', 'MDL', 'CAT' 集中准则一并估计,并采用试验方法确定那一个阶次更好。
)....................... 以上省略...................................................假设原始数据序列为x,那么n阶参数使用最小二乘估计在MATLAB中实现如下:复制内容到剪贴板代码:Y = x;Y(1:n) = [];m = N-n;X = [];% 构造系数矩阵for i = 1:mfor j = 1:nX(i,j) = xt(n+i-j);endendbeta = inv(X'*X)*X'*Y';beta即为用最小二乘法估计出的模型参数。
此外,还有估计AR 模型参数的Yule-Walker 方程法、基于线性预测理论的Burg 算法和修正的协方差算法等[26] 。
相应的参数估计方法在MATLAB 中都有现成的函数,比如aryule、arburg以及arcov等。
4.3.3 AR 模型阶次的选择及实验设计文献[26]中介绍了五种不同的AR 模型定阶准则,分别为 矩阵奇异值分解则。
文献[28]中还介绍了一种BIC 定阶准则。
SVD 方法是对Yule-Walker 方 程中的自相关矩阵进行 SVD 分解来实现的,在MATLA 工具箱中arorder 函数就是使用的该算法。
自己编写算法功率谱密度三种matlab实现方法

自己编写算法功率谱密度三种matlab实现方法功率谱密度的三种matlab实现方法一:实验目的:(1)掌握三种算法的概念、应用及特点;(2)了解谱估计在信号分析中的作用;(3)能够利用burg法对信号作谱估计,对信号的特点加以分析。
二;实验内容:(1)简单说明三种方法的原理。
(2)用三种方法编写程序,在matlab中实现。
(3)将计算结果表示成图形的形式,给出三种情况的功率谱图。
(4)比较三种方法的特性。
(5)写出自己的心得体会。
三:实验原理:1.周期图法:周期图法又称直接法。
它是从随机信号x(n)中截取N长的一段,把它视为能量有限x(n)真实功率谱的估计的抽样.认为随机序列是广义平稳且各态遍历的,可以用其一个样本x(n)中的一段来估计该随机序列的功率谱。
这当然必然带来误差。
由于对采用DFT,就默认在时域是周期的,以及在频域是周期的。
这种方法把随机序列样本x(n)看成是截得一段的周期延拓,这也就是周期图法这个名字的来历。
2.相关法(间接法):这种方法以相关函数为媒介来计算功率谱,所以又叫间接法。
这种方法的具体步骤是:第一步:从无限长随机序列x(n)中截取长度N的有限长序列列第二步:由N长序列求(2M-1)点的自相关函数序列。
(2-1)这里,m=-(M-1)…,-1,0,1…,M-1,MN,是双边序列,但是由自相关函数的偶对称性式,只要求出m=0,。
,M-1的傅里叶变换,另一半也就知道了。
第三步:由相关函数的傅式变换求功率谱。
即以上过程中经历了两次截断,一次是将x(n)截成N长,称为加数据窗,一次是将x(n)截成(2M-1)长,称为加延迟窗。
因此所得的功率谱仅是近似值,也叫谱估计,式中的代表估值。
一般取M<<N,因为只有当M较小时,序列傅式变换的点数才较小,功率谱的计算量才不至于大到难以实现,而且谱估计质量也较好。
因此,在FFT问世之前,相关法是最常用的谱估计方法。
三:Burg法:AR模型功率谱估计又称为自回归模型,它是一个全极点的模型,要利用AR模型进行功率谱估计须通过levinson_dubin递推算法由Yule-Walker方程求得AR的参数:σ2,α1α2…αp。
AR模型功率谱估计及Matlab实现

m = 1, 2, r x ( p ) r x ( p - 1) r x ( p - 2) r x ( 0) ap 型系数 : a m ( m) = k m
,p
( 11 )
再利用 L evinson Durbin 递推算法可得 AR 模 ( 12 ) ,p ( 13 )
即是 AR 模 型 的 正 则 方程 , 又 称尤 拉 沃 克 ( Yule Walker ) 方程。 2. 2 AR 模型参数估计的典型算法
型参数的几种典型求解算法 , 并借助 M A T L AB 平台对各种算法的功率谱进行仿真。 关键词 中图分类号
Power Spectrum Density Estimation for AR Model and the Simulation in Matlab
Y an Q inghua Cheng Z hao gang Duan Y unlong 050003) ( O rdnance Eng ineering Co llege, Shijiazhuang
4
结语
文章介绍了现代功率谱估计中的 AR 模型的
功率谱估计 , 并重点介绍 了 AR 模 型几种典型算 法 , 通过对功率谱的仿真比较可以得到 : 自相关法 的计算简单, 但谱估计的分辨率较差, 而 Bur g 算法 和改进协方差算法是较为通用的方法, 计算不太复 杂 , 且具有较好的谱估计质量。因此, 实际应用时 , 应根据需要选择合适的算法。
表1 不同算法的估计参数 自相 1. 0000 0. 0648 0. 0995 - 0. 0244 - 0. 0886 - 0. 9781 关法 Burg 1. 0000 - 0. 3130 0. 3586 - 0. 1014 - 0. 5718 0. 2077 法
用MATLAB进行AR模型功率谱分析

用MATLAB 进行AR 模型功率谱分析随机信号序列x(n)是均值为0方差为1的高斯型白噪声经过AR 模型()43219606.01697.29403.22137.211----+-+-=z z z z z H后的输出,采样长度为512,AR 模型阶次取3,4,5,用L-D 算法估计功率谱密度。
分析:MATLAB 函数pyulear()的用法pyulear()是基于自相关法、利用Levesion-Durbin 算法估计功率谱密度。
[px,w]=pyulear(x,p,[nfft],’range ’)x 为随即信号序列,是由白噪声经AR 模型产生的,在MATLAB 中可以由白噪声序列u 经过表示AR 模型的数字滤波器后得到,使用的是filter 函数;p 为AR 模型阶次;nfft 为由模型参数计算频谱时的频域采样点数,默认为256; range 用于选择输出是为单边[0,π],还是双边[0,2π];w 的范围[0,π],还是 [0,2π]由range 确定或由nfft 的奇偶性确定; 该函数返回实际频率w 下的功率谱密度向量,w 的单位即为rad/sample ,默认sample 为1Hz ,若要转化为归一化频率,只需用w/π即可。
实验结果如图三.1(对应程序为shiyan3.m ):图 错误!文档中没有指定样式的文字。
.1短时傅里叶变换(Short Time Fourier Transform, STFT )法,在MATLAB 中做短时傅里叶变换的函数为spectrogram :spectrogram(x,window,overlap,f,fs) [s,f,t,p]=spectrogram(x,window,overlap,f,fs)x 为被分析序列,window 为窗函数及长度,默认为hamming 窗,overlap 为相邻两个短时序列之间重叠的数据点数,f 为一向量,确定在某一个频率范围内做短时傅里叶变换,fs 为采样频率。
MATLAB在数字信号处理中的应用(第2版) 第8章 功率谱估计

8.2 随机信号处理基础
随机信号又称为随机函数、时间序列或 随机过程,是数学上表示无限能量信号的 一个基本概念。 它可以分为平稳随机信号和非平稳随机 信号两大类。随机信号不能用确定性的时 间函数来描述,只能用统计方法来研究, 其统计特性通常用概率分布函数与概率密 度函数来描述或用统计平均来表征。
1-10
8.3 经典功率谱估计方法
8.3.2 间接法
1-11
8.3 经典功率谱估计方法
8.3.3 基于经典谱估计的系统辨识
1-12
8.4 改进的直接法估计
8.4.1 Bartlett法
1-13
8.4 改进的直接法估计
8.4.2 Welch法
1-14
8.5 AR模型功率谱估计
传统的功率谱估计方法是利用加窗的数据 或加窗的相关函数估计值的傅立叶变换来计算 的,具有一定缺点:方差性能较差、谱分辨率低。 而参数模型法可以大大提高功率谱估计的分辨 率,是现代谱估计的主要研究内容,在语音分 析、数据压缩以及通信等领域有着广泛的应用。 按照模型化进行功率谱估计,主要思路为: (1) 选择模型; (2) 从给出的数据样本估计假设模型的参数; (3) 将估计出的模型参数带入模型的理论功率 谱密度公式中得出一个较好的谱估计值。
1-19
8.6现代谱估计的非参数方法
8.6.1 MTM(Multitaper)法估计
MTM法使用正交的窗口来截取获得相互独立的 功率谱估计,然后再把这些估计结果结合得到最终 的估计。MTM法最重要的参数是时间-带宽的乘 积—— NW。此参数直接影响到谱估计的窗的个数, 其中窗的个数为2*NW-1个。因此,随着NW的增大, 窗的个数增多,会有更多的谱估计,从而谱估计的 方差得到减小。但是,同时会带来谱泄漏的增大, 而且正的谱估计的结果将会有更大的偏差。
AR模型功率谱估计及Matlab实现

南昌大学实验报告学生姓名:学号:专业班级:实验类型:□验证□综合□设计□创新实验日期:实验成绩:一、实验名称基于AR模型的功率谱估计及Matlab实现二、实验目的1.了解现代谱估计方法,深入研究AR模型法的功率谱估计2.利用Matlab对AR模型法进行仿真三、实验原理1.现代谱估计现代功率谱估计以信号模型为基础,如下图所示为x(n)的信号模型,输入白噪声ω(n)均值为0,方差为σω2,x(n)的功率谱可由下式计算:P xx(e jω)=σω2|H(e jω)|2如果通过观测数据估计出信号模型的参数,信号功率谱就可以按上式计算出来,这样估计功率谱的问题就变成由观测数据估计信号模型参数的问题。
2.功率谱估计的步骤:(1)选择合适的信号模型;(2)根据x(n)有限的观测数据,或者有限个自相关函数估计值,估计模型的参数;(3)计算模型的输出功率谱。
3.模型选择选择模型主要考虑是模型能够表示谱峰、谱谷和滚降的能力。
对于尖峰的谱,选用具有极点的模型,如AR、ARMA模型;对于具有平坦的谱峰和深谷的信号,可以选用MA模型;既有极点又有零点的谱应选用ARMA模型,应该在选择模型合适的基础上,尽量减少模型的参数。
4.AR模型功率谱估计在实际中,AR 模型的参数估计比较简单,对其有充分的研究,AR模型功率谱估计又称为自回归模型,它是一个全极点的模型,要利用AR模型进行功率谱估可以通过列文森(Levenson)递推算法由Yule-Walker 方程求AR模型的参数。
4.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)说明:Pxx =Pyulear(x,ORDER,NFFT)中,采用Yule--Walker方法估计序列x的功率谱,参数ORDER用来指定AR模型的阶数,NFFT为FFT算法的长度,默认值为256,若NFFT为偶数,则Pxx为(NFFT/2 + 1)维的列矢量,若NFFT为奇数,则Pxx为(NFFT + 1)/2维的列矢量;当x为复数时,Pxx长度为NFFT。
AR模型功率谱估计的MATLAB实现

四、涉及实验的相关情况介绍(包含使用软件或实验设备等情况) MATLAB7.0 此软件是美国 MathWorks 公司出品的商业数学软件。中文名为 “矩阵实验室”,用于算法开发,数据可视化,数据分析以及数值计算的高级技 术计算语言和交互式环境。
操作系统为 Windows XP 函数: Pyulear (): Yule-Walker 法计算功率谱 Pburg (): Burg 法计算功率谱 Pmcov ():改进协方差法计算功率谱
0
0
50
100
150
200
250
300
350
400
450
500
六、实验总结 分析:
通过下面的三幅图,我们可以清晰的观察到在 300Hz 处有二个挨得很近的峰值。 而自相关法得到的功率谱图中两个峰值已经混叠。 说明 Burg 与改进协方差法均比 自相关法估计的功率谱性能有所改善 。
相关图形:
仿 真 信 号 x(n) 10 0 -10 4 2 0 4 2 0 5 0 50 100 150 200 250 300 350 改进协方差算法功率谱估计 400 450 500 0 50 100 150 200 250 300 350 Burg算 法 功 率 谱 估 计 400 450 500 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 自相关法功率谱估计 0.8 0.9 1
数字信号处理
AR 模型功率谱估计的 MATLபைடு நூலகம்B 实现
课程实验报告
实验指导教师:***
实验名称 姓 名
专业、 班级 实验日期
实验地点
一、实验内容
现代功率谱估计中 AR 模型参数的 Burg 算法与改进自相关的算法,比较集 中算法的优劣,用 MATLAB 仿真。 对一个输入信号进行自相关法功率谱估计、 Burg 算法功率谱估计、 改进协方差算 法功率谱估计的 MATLAB 仿真,输出功率谱图。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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)
说明:Pxx =Pyulear(x,ORDER,NFFT)中,采用Yule--Walker方法估计序列x
的功率谱,参数ORDER用来指定AR模型的阶数,NFFT为FFT算法的长度,默
认值为256,若NFFT为偶数,则Pxx为(NFFT/2 + 1)维的列矢量,若NFFT为奇数,则Pxx为(NFFT + 1)/2维的列矢量;当x为复数时,Pxx长度为NFFT。
[Pxx,W]=Pyulear(x,ORDER,NFFT)中,返回一个频率向量W.
[Pxx,W]=Pyulear(x,ORDER,NFFT,Fs)中,可以在F向量得到功率谱估计的频率点,Fs指定采样频率。
Pyulear(x,ORDER,NFFT,Fs,RANGE,MAGUNITS)中,直接画出功率谱估计的曲线图。
2. Pburg函数:
功能:利用Burg方法进行功率谱估计。
格式:Pxx=Pburg(x,ORDER,NFFT)
[Pxx,W]=Pburg(x,ORDER,NFFT)
[Pxx,W]=Pburg(x,ORDER,NFFT,Fs)
Pburg(x,ORDER,NFFT,Fs,RANGE,MAGUNITS)
说明:Pburg函数与Pyulear函数格式相同,只是计算AR模型时所采用的方法
不同,因此格式可以参照Pyulear函数。
3. Pcov函数:
功能:利用协方差方法进行功率谱估计。
格式:Pxx=Pcov(x,ORDER,NFFT)
[Pxx,W]=Pcov(x,ORDER,NFFT)
[Pxx,W]=Pcov(x,ORDER,NFFT,Fs)
Pcov(x,ORDER,NFFT,Fs,RANGE,MAGUNITS)
说明:Pcov函数采用协方差法估计AR模型的参数,然后计算序列x的功率谱。
协方差法与改进的协方差法相比,前者仅令前向预测误差为最小,其他步骤是一样的。
:Pcov函数与Pyulear函数格式相同,只是计算AR模型时所采用的方
法不同,因此格式可以参照Pyulear函数.
4.Pmcov:
功能:利用改进的协方差方法进行功率谱估计。
格式:Pxx=Pmcov(x,ORDER,NFFT)
[Pxx,W]=Pmcov(x,ORDER,NFFT)
[Pxx,W]=Pmcov(x,ORDER,NFFT,Fs)
Pmcov(x,ORDER,NFFT,Fs,RANGE,MAGUNITS)
例如:输入下面语句:
figure 8.10--8.11
Fs=1000; %采样频率
n=0:1/Fs:3;
xn=cos(2*pi*n*200)+randn(size(n));
%设置参数
order=20;
nfft=1024;
%Yule-Walker方法
figure(1)
pyulear(xn,order,nfft,Fs);
%Burg方法
figure(2)
pburg(xn,order,nfft,Fs);
%协方差法
figure(3)
pcov(xn,order,nfft,Fs);
%改进协方差方法
figure(4)
pmcov(xn,order,nfft,Fs);
AR谱的分辨率:
经典谱估计的分辨率反比与信号的有效长度,但是现代谱估计的分辨率可以不受此限制. 这是因为对于给定的N点有限长序列x(n),虽然其估计出的相关函数也是有限长的,但是现代谱估计的一些方法隐含着数据和自相关函数的外推,使其可能的长度超过给定的长度,因而AR谱的分辨率较高。
例如:序列x(n)由两个正铉信号组成,其频率分别为f1=20Hz和f2=21Hz,并含有一定的噪声量。
试分别用周期图法,Burg方法与改进的协方差法估计信号的功率谱,且AR模型的阶数取30和50两种情况讨论。
上面的例子可以通过下面程序实现:
Fs=200;
n=0:1/Fs:1;
xn=sin(2*pi*20*n)+sin(2*pi*21*n)+0.1*randn(size(n));
window=boxcar(length(xn));
nfft=512;
[Pxx,f]=periodogram(xn,window,nfft,Fs);
figure(1)
plot(f,10*log10(Pxx)),grid
xlabel('Frequency(Hz)')
ylabel('Power Spectral Density(dB/Hz)')
title('Periodogram PSD Estimate')
order1=30;
order2=50;
figure(2)
pburg(xn,order1,nfft,Fs)
figure(3)
pburg(xn,order2,nfft,Fs) figure(4)
pmcov(xn,order1,nfft,Fs) figure(5)
pmcov(xn,order1,nfft)。