使用FFT计算滑动平均(MA)模型参数

举报
aqhs 发表于 2023/01/06 15:16:24 2023/01/06
【摘要】 利用时间序列自相关函数与滑动平均(MA)模型参数的关系,采用快速傅里叶变换(FFT)算法实现MA模型参数的快速估计,所得到的MA模型具有最小相位性质。MA模型也是现代谱估计中常用的模型,m阶滑动平均模型的自相关系数是m阶截尾的,偏相关系数是拖尾的。根据MA模型可计算信号功率谱密度。对于非平稳时间序列一般采用差分法得到想要的平稳序列。

使用FFT计算滑动平均(MA)模型参数

利用时间序列自相关函数与滑动平均(Moving Average,MA)模型参数的关系,采用快速傅里叶变换(Fast Fourier Transform,FFT)算法实现MA模型参数的快速估计,所得到的MA模型具有最小相位性质。MA模型也是现代谱估计中常用的模型,m阶滑动平均模型的自相关系数是m阶截尾的,偏相关系数是拖尾的。根据MA模型可计算信号功率谱密度。对于非平稳时间序列一般采用差分法得到想要的平稳序列。

设MA模型的阶数为m(记为MA(m)),w(t)是零均值高斯白噪声序列,则时间序列x(t)的滑动平均(MA)模型定义为:

   

其中b(i),i = 0,1,…,m是MA(m)模型的参数,且b(0)恒等于1。

根据参考文献,总结利用FFT计算MA(m)模型的参数过程如下:

计算自相函数估计值,c[i],i=0,1,…,K-1,K是2的整数次幂(如K=1024),且K远大于阶次m,由于MA序列自相关函数具有截尾性质,所以令当i>m时c[i]=0,即,

   

其中n是时间序列x(t)的长度。

构建序列r(i),i=0,1,…,K-1,

   

r(i)具有对称性质,即r(i)=r(K-i),k = 1,2, …, K/2。

使用快速傅里叶变换(FFT)计算序列p(i),

   

其中FFT(r)表示计算r(i)序列的傅里叶变换,|·|表示求模。

使用傅里叶反变换(IFFT)计算序列s(i),

   

其中log(·)表示自然对数,IFFT(·)表示计算傅里叶反变换,Re(·)表示取实部。

求U=[u(0), u(1), …, u(m)]序列,

   

求MA(m)模型系数b(i), i=0,1,2,…,m,

   

b(i),b(0)≡1,i=0,1,…,m,是用复倒谱法恢复的最小相位序列,即MA(m)模型的参数。

以上求取MA(m)模型参数的算法基于时间序列的自相关函数,涉及两次FFT运算,速度较快,避免了迭代运算。

使用MA(m)模型计算时间序列功率谱:

   

参考文献

[1] 成奇明,黄绣坤,张树京. 一种MA参数矩估计新方法[J]. 信号处理,1991年9月,第7卷第3期,第159-162页.
[2] 信号功率谱估计,https://bbs.huaweicloud.cn/blogs/360317

软件使用

MA模型参数估计,菜单操作:《分析》→《通用分析》→《MA模型估计》,出现如下对话框,

在对话框中输入合适的MA模型阶数m,回车或者点击 “计算”按钮,可以重新按照新的阶数估计MA模型参数,并计算MA模型估计的功率谱(红色曲线),并与之对照绘制出用周期图法估计的功率谱(蓝色曲线)。左边的列表框里显示模型参数,可通过点击“保存”按钮将参数保存到指定的文件之中。这里MA模型阶次取值范围是[1,256]之间的整数。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。