ImageVerifierCode 换一换
格式:DOCX , 页数:14 ,大小:68.05KB ,
资源ID:8926744      下载积分:10 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/8926744.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(利用协方差法估计AR模型参数.docx)为本站上传会员【s4****5z】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

利用协方差法估计AR模型参数.docx

1、 随机信号分析基础大作业 利用协方差法估计AR模型参数 进而估计功率谱 严 奎(学号:3222008008) 陈 韬(学号:3222008022) 朱燕豪(学号:3222008021) 2011年01月15日 [键入文字] 作业综述: 本作业中采用面向对象的程序设计方法,将用到的子程序封装在一个类中,防止其他函数的干扰,具有良好的信息内聚性。类中定义的有获得(0,1)分布随机数的函数uniform(),产生高斯分布随机数的函数gauss(),产生自回归滑动平均模型ARMA(p,q)数据的函数

2、arma(),用乔布斯基(Cholesky)算法求解对称正定方程组的函数cholesky(),计算ARMA模型的功率谱密度的函数psd(),用协方差方法估计AR模型参数,进而实现功率谱估计的函数covar()。采用的编程工具是VC++6.0以及VS2010,用MATLAB对生成的数据进行画图。 一.题目要求 给定一段信号数据及采样率,利用现代谱估计理论编程估计信号的功率谱。 二.基本原理及方法 现代谱估计是通过观测数据估计参数模型再按照求参数模型输出功率的方法估计信号功率谱,主要是针对经典谱估计的分辨率低和方差性能不好等问题提出的,应用最广的是AR参数模型。现代谱估计的参数模型有自

3、回归滑动平均(ARMA)模型、自回归(AR)模型、滑动平均(MA)模型,Wold分解定理阐明了三者之间的关系:任何有限方差的ARMA或MA模型的平稳随机过程可以用无限阶的AR模型表示,任何有限方差的ARMA或MA模型的平稳随机过程可以用无限阶的AR模型表示。但是由于只有AR模型参数估计是一组线性方程,而实际的物理系统往往是全极点系统,因而AR应用最广。 我们用协方差法估计AR模型参数,进而实现功率谱估计。若已知平稳随机序列x(n)的AR模型为 其中a(i)是AR系数,w(n)是均值为零,均方差为σ的白噪声。 1. 计算协方差 2. 用乔布斯基算法解对称正定方程组 N阶对称正定

4、方程组的矩阵形式为AX=B,即 矩阵A的乔布斯基分解 这里D是主对角元素都为正实数的对角阵,即D=diag(d1,d2,…,dn),L为主对角元素是1的下三角矩阵。用乔布斯基算法解对称正定方程组的方法是,先用回代法求解方程组LY=B,得到Y之后,再用回代法求解方程 3.计算激励白噪声的方差 4.用AR模型参数的估计值,可以计算功率谱密度 三.算法设计与实现 1.程序流程图 采用协方差的方法进行功率谱估计。如下图所示 开始 输入有限序列AR模型系数 根据噪声均值、方差产生自高斯白噪声 产生自回归滑动平均模

5、型ARMA(p,q)模型的数据 用协方差法估计无限序列AR模型参数 计算AR模型系数功率谱密度 根据已存储的数据用Matlab做图 结束 图1算法流程图1 2.主要模块的设计: 1. 产生随机序列的函数uniform(), 采用线性同余法由种子seed产生随机数。 2. 产生高斯白噪声的函数gauss(), gauss(double mean,double sigma,long int * s) { int i;double x,y; for(x=0,i=0;i<12;i++)

6、 x+=uniform(0.0,1.0,s); x=x-6.0; y=mean+x*sigma; return(y); } 3. ARMA模型数据的生成函数为arma()略 4. 乔里斯基算法解对称正定方程组的函数cholesky()略 5. 由协方差函数covar()求AR参数; 6. 再根据AR参数求出功率谱的函数psd()略; 7. 最终用MATLAB的 画图工具给出直观的功率谱图形, 四.结果分析 输入平稳随机序列x(n)的AR模型为 其中1,-2.76,3.809,-2.654,0.924为AR系数, 根据要求产生W(n)是均值为零

7、方差为1的白噪声。 根据均匀分布产生(0,1)分布的随机序列,再由均值和方差生成高斯白噪声如下图所示: 由图可知产生的随机序列近似于高斯分布,符合题目要求。 由白噪声求自回归滑动平均模型ARMA(p,q)模型的数据, 用协方差法估计AR模型参数,结果为: a(0)= 1.0000000 a(1)=—2.7310949 a(2)= 3.7478402 a(3)=—2.5951549 a(4)= 0.9022404 可以看出估计出的AR模型参数与原AR模型系数基本接近,但是不相等,这是因为现代谱估计是由有限长序列估计无限长的随机序列AR模型参数,但是结果基本接近。

8、 其中预测误差功率是Pe=1.0995336,与原方差1较接近。 计算AR模型系数功率谱密度 根据已存储在covar1.dat的数据,用Matlab做图 在归一化频率的基础上做的功率谱 五.任务分工 三人合作进行了前期的资料查找,阅读文献,确定现代谱估计,分析算法。 严 奎 (学号:3222008008)完成了程序调试,绘图。 陈 韬 (学号:3222008022)完成答辩PPT的制作,以及负责主讲。 朱燕豪 (学号:3222008021)完成论文的撰写。 n 六.心得 通过这次的大作业提高了我们的合作能力,文献查取能力,编程能力,使我们掌

9、握了书本上的知识,复习了前面的高斯分布,白噪声的产生,特别是掌握了功率谱的多种分析方法,了解了现代谱估计的方法与原理,极大地提高了我们的综合能力。 在选题时,我们以勇于专研问题的精神,选了现代谱分析。在做课题时,我们发现了很多问题,自己对谱分析的了解只停留在很基础的方面。特别是在完成算法分析时我们花了很多时间,开始我们只建立了AR模型,为了更加完善,我们加上了ARMA模型,最后在此基础上我们采用协方差分析使结果更趋于逼真。程序编写时,我们参照了大量的网上资源,但是调试过程中,变量的定义出了很多问题,很多地方都出了问题,我们只能一步一步调试改进。 虽然开始时我们遇到很多困难,编程能力太差,书

10、本知识体系不完整缺少功率谱分析具体算法,上网条件差,图书馆资源有限等。但是怀着认真、踏实的态度我们完成了预期的任务,达到了一定的效果。总的来说,这次的课题我们都收获颇多。 七.参考文献 [1]殷福亮,宋爱军数字信号C语言程序集.辽宁科技出版社,1997 [2]张贤达,现代信号处理,清华大学出版社,2002 [3]常建军,李海林,随机信号分析,科学出版社,2006 八.附录 程序源代码 #include #include #include"stdlib.h" #include"stdio.h" #include"math.h" #i

11、nclude"malloc.h" using namespace std; class Power { public: Power(){} ~Power(){} double uniform(double a,double b,long int * seed); double gauss(double mean,double sigma,long int * s); void cholesky_1(double a[],double b[],int n); void covar(double x[],int n,int p,double a[],double

12、 *v,int mode); void arma(double a[],double b[],int p,int q,double mean,double sigma,long *seed,double x[],int n); void psd(double b[],double a[],int q,int p,double sigma2,double fs,double x[],double freq[],int len,int sign); }; double Power::uniform(double a,double b,long int *seed) { doub

13、le t; *seed=2045*(*seed)+1; //seed为种子 *seed=*seed-(*seed/1048576)*1048576; t=(*seed)/1048576.0; t=a+(b-a)*t; return(t); } double Power::gauss(double mean,double sigma,long int * s) { int i;double x,y; for(x=0,i=0;i<12;i++) x+=uniform(0.0,1.0,s); x=x-6.0;

14、 y=mean+x*sigma; return(y); } void Power::cholesky_1(double a[],double b[],int n) { int i,j,k,m; double *d,*y,*xl,eps; d=(double *)malloc(n*sizeof(double)); y=(double *)malloc(n*sizeof(double)); xl=(double *)malloc(n*n*sizeof(double)); eps=1.0e-15; m=0; d[0]=a[m]; for(i

15、1;i

16、 printf("\nill-conditioned! \n"); return; } } y[0]=b[0]; for(k=1;k=0;k--) { b[k]=y[k]/d[k]; for(j=(k+1);j

17、); free(y); free(xl); } void Power::covar(double x[],int n,int p,double a[],double *v,int mode) { int i,j,k,m; double cc,sum,*c; c=(double *)malloc((p*(p+1)/2)*sizeof(double)); m=0; for(k=1;k<=p;k++) { for(j=1;j<=k;j++) { c[m]=0.0; for(i=p;i

18、[i-j]*x[i-k]; } if(mode==1) { for(i=0;i<(n-p);i++) { c[m]+=x[i+j]*x[i+k];// 计算Cxx(i,k) } } m=m+1; } } for(j=1;j<=p;j++) { a[j-1]=0.0; for(i=p;i

19、j-1]-=x[i+j]*x[i]; //计算Cxx(j,0) } } } cholesky_1(c,a,p); //解得a(i) for(k=(p-1);k>=0;k--) { a[k+1]=a[k]; } a[0]=1.0; sum=0.0; for(k=0;k<=p;k++) { cc=0.0; for(i=p;i

20、i=0;i<(n-p);i++) { cc+=x[i]*x[i+k]; //计算Cxx(0,k) } } if(k==0) { sum+=cc; } else { sum+=cc*a[k]; //计算a(k)*Cxx(0,k) } } if(mode==1) { v[0]=sum/(2*(n-p)); } else { v[0]=sum/(n-p);

21、 //计算sigma2 } free(c); } void Power::arma(double a[],double b[],int p,int q,double mean,double sigma,long *seed,double x[],int n) { int i,k,m; double s,*w; w=(double *)malloc(n*sizeof(double)); for(k=0;k

22、for(k=1;k<=p;k++) //得到前p个数据 { s=0.0; for(i=1;i<=k;i++) { s+=a[i]*x[k-i]; } s=b[0]*w[k]-s; if(q==0) { x[k]=s; continue; } m=(k>q)?q:k; for(i=1;i<=m;i++) { s+=b[i]*w[k-i]; } x[k]=s; } for(k=

23、p+1);k

24、[],int q,int p,double sigma2,double fs,double x[],double freq[],int len,int sign) { int i,k; double ar,ai,br,bi,zr,zi,im,re,xre,xim; double ang,den,numr,numi,temp; for(k=0;k

25、8.0*atan(1.0)*ang); br=0.0; bi=0.0; for(i=q;i>0;i--) { re=br; im=bi; br=(re+b[i])*zr-im*zi; bi=(re+b[i])*zi+im*zr; //分子的傅里叶变换 } ar=0.0; ai=0.0; for(i=p;i>0;i--) { re=ar; im=ai; ar=

26、re+a[i])*zr-im*zi; //分母的傅里叶变换 ai=(re+a[i])*zi+im*zr; } br=br+b[0]; ar=ar+1.0; numr=ar*br+ai*bi; //分母有理化后分子的实部 numi=ar*bi-ai*br; den=ar*ar+ai*ai; xre=numr/den; xim=numi/den; switch(sign) { case 0: {

27、 x[k]=xre*xre+xim*xim; x[k]=sigma2*x[k]/fs; break; } case 1: { temp=xre*xre+xim*xim; temp=sigma2*temp/fs; if(temp==0.0) temp=1.0e-20; x[k]=10.0*log10(temp); } } } } void main() { Power P;

28、 int i,n,p,q,len; long seed; double v,mean,var,c[10],x[500],freq[200]; double fs,sigma2; static double a[5]={1.0,-2.76,3.809,-2.645,0.924}; static double b[1]={1.0}; FILE *fp; p=4; q=0; seed=135791; mean=0.0; var=1.0; n=500; P.arma(a,b,p,q,mean,var,&seed,x,n); for(i=

29、0;i<300;i++) x[i]=x[i+200]; n=300; P.covar(x,n,p,c,&v,0); printf("The coefficient of AR model\n"); for(i=0;i<=p;i++) { printf("a(%d)=%10.7lf\n",i,c[i]); } printf("The reflet coefficient of AR model\n"); printf("Pe=%10.7lf\n",v); fs=1.0; sigma2=v; len=200; P.psd(b,c,q,p,sigma2,fs,x,freq,len,1); fp=fopen("covar1.dat","w"); for(i=0;i

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服