ARMA模型属于信号现代谱估计的范畴,AR模型常用于信号的线性预测。AR模型最后归结为线性方程,MA最后为非线性方程,因此,AR模型使用较多。

AR模型最后归结为解Yule-Walker方程,对应矩阵为Toeplitz矩阵,存在Levinson快速算法,这将在后面介绍,这里介绍使用C编写的ARMA模型程序。

一、公式简介

/*****************************************
**********ARMA(p,q)***********************
a:自回归系数
b:滑动平均系数
p:自回归阶数
q:滑动平均阶数
mean:gauss白均值
sigma:gauss白方差
seed:随机数种子
x:存放ARMA(p,q)产生的数据
n:ARMA(p,q)产生的数据长度
******************************************/
void arma(const double* a,const double* b,int p,int q,double mean,double sigma,long int* seed,double* x,int n)
{
int i,k,m;
double s,*w; w = (double*)malloc(n * sizeof(double));
for(k=0;k<n;k++)
w[k] = gauss(mean,sigma,seed);
x[0] = b[0] * w[0];
for(k=1;k<=p;k++)
{
s = 0.0;
for(i=1;i<=k;i++)
s += a[i] * x[k-i];
s = b[0] * w[k] - s;
if(0 == q)
{
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 = (p+1);k<n;k++)
{
s = 0.0;
for(i=1;i<=p;i++)
s += a[i] * x[k-i];
s = b[0] * w[k] - s;
if(0 == q)
{
x[k] = s;
continue;
}
for(i=1;i<=q;i++)
s += b[i] * w[k-i];
x[k] = s;
}
free(w);
}

完整代码参考:https://github.com/HeYingnan/dsp

常用数字信号的产生(C实现)-ARMA模型数据生成的更多相关文章

  1. [WebGL入门]十二,模型数据和顶点属性

    注:文章译自http://wgld.org/,原作者杉本雅広(doxas),文章中假设有我的额外说明,我会加上[lufy:].另外.鄙人webgl研究还不够深入,一些专业词语.假设翻译有误.欢迎大家指 ...

  2. 计量经济与时间序列_关于Box-Jenkins的ARMA模型的经济学意义(重要思路)

    1 很多人已经了解到AR(1)这种最简单的时间序列模型,ARMA模型包括AR模型和MA模型两个部分,这里要详细介绍Box-Jenkins模型的观念(有些资料中把ARMA模型叫做Box-Jenkins模 ...

  3. 第三百节,python操作redis缓存-其他常用操作,用于操作redis里的数据name,不论什么数据类型

    python操作redis缓存-其他常用操作,用于操作redis里的数据name,不论什么数据类型 delete(*names)根据删除redis中的任意数据类型 #!/usr/bin/env pyt ...

  4. Spring MVC 处理模型数据(@ModelAttribute)

    SpringMVC中的模型数据是非常重要的,因为MVC中的控制(C)请求处理业务逻辑来生成数据模型(M),而视图(V)就是为了渲染数据模型的数据. 直白来讲,上面这句话的意思就是:当有一个查询的请求, ...

  5. SpringMvc:处理模型数据

    SpringMvc提供了以下途径输出模型数据: -ModelAndView:处理方法返回值类型为ModelAndView,方法体即可通过该对象添加模型数据 -Map或Model:入参为org.spri ...

  6. 5、处理模型数据ModelAndView、Map、Model以及@SessionAttributes注解

    Spring MVC提供了以下几种途径输出模型数据 —— ModelAndView: 处理方法返回值类型为ModelAndView时,方法体即可通过该对象添加模型数据.数据会添加到request域中. ...

  7. springmvc学习(五)——处理模型数据

    Spring MVC 提供了以下几种途径输出模型数据: ModelAndView: 处理方法返回值类型为 ModelAndView 时, 方法体即可通过该对象添加模型数据Map 及 Model: 入参 ...

  8. Asp.Net MVC4.0 官方教程 入门指南之五--控制器访问模型数据

    Asp.Net MVC4.0 官方教程 入门指南之五--控制器访问模型数据 在这一节中,你将新创建一个新的 MoviesController类,并编写代码,实现获取影片数据和使用视图模板在浏览器中展现 ...

  9. springMVC(6)---处理模型数据

    springMVC(6)---处理模型数据 之前一篇博客,写个怎么获取前段数据:springMVC(2)---获取前段数据,这篇文章写怎么从后端往前端传入数据. 模型数据类型             ...

随机推荐

  1. Hadoop ->> Name node/Data node和Job tracker/Task tracker的区别

    刚好看到关于Name node/Data node和Job tracker/Task tracker的解释,一开始有点混淆,以为说Job tracker必须运行在Name node上,他们俩有依赖或者 ...

  2. 利用SQL Server Management Studio(SSMS)复制数据库

    利用SQL Server Management Studio(SSMS)复制数据库 标签(空格分隔): SQLServer 前言 今天由于客户购买的软件版本确认了,而之前进行开发的本地数据库版本较低, ...

  3. JS interview loop code

    //九九乘法表 document.write("<table width='600' border=0'>"); for(var i=1; i<=9; i++){ ...

  4. CSS 替换元素和非替换元素 行内非替换元素

    html元素也可以分为替换元素和非替换元素 1.替换元素 替换元素是由浏览器根据表示的元素和属性决定显示的内容. 例如:<img src="./image.jpg" /> ...

  5. 【Unity3D】【NGUI】UIRect的Anchor的使用

    NGUI版本号:3.6.5 以以下的图,解释下主要的Anchors的使用(能够通过官方的Anchor和Chat样例进行深入学习) Target不是一定要是Sprite.能够是随意的UIRect(UIS ...

  6. Django:ORM关系字段

    一,ForeignKey 外键类型在ORM中用来表示外键关联关系,一般把ForeignKey字段设置在 '一对多'中'多'的一方. ForeignKey可以和其他表做关联关系同时也可以和自身做关联关系 ...

  7. CFS调度分析(内核版本:2.6.34)

    CFS调度分析(内核版本:2.6.34) 1.时间记账 CFS不再有时间片的概念,他维护的是每个进程运行的时间记账 使用调度器实体结构来追踪进程运行记账: <linux/sched.h> ...

  8. Gym - 101246D 博弈

    题意:一个无向有环的图,从 1 号结点起火,开始蔓延,两个绝顶聪明的人轮流走,谁不能走谁输,输出输的人: 分析: 当时知道是博弈,但是想当然的以为 1 号结点有一个奇数层,就必胜:其实不是这样的,当一 ...

  9. POJ 3020 Antenna Placement 【最小边覆盖】

    传送门:http://poj.org/problem?id=3020 Antenna Placement Time Limit: 1000MS   Memory Limit: 65536K Total ...

  10. java json和对象互转

    开发过程中遇到一些对象转string和string转对象的问题,浪费了很久,现在用的熟练些了,总结如下: 1.字符串尽量定义成json可解析的,如{"name":"a&q ...