常用数字信号的产生(C实现)-ARMA模型数据生成
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模型数据生成的更多相关文章
- [WebGL入门]十二,模型数据和顶点属性
注:文章译自http://wgld.org/,原作者杉本雅広(doxas),文章中假设有我的额外说明,我会加上[lufy:].另外.鄙人webgl研究还不够深入,一些专业词语.假设翻译有误.欢迎大家指 ...
- 计量经济与时间序列_关于Box-Jenkins的ARMA模型的经济学意义(重要思路)
1 很多人已经了解到AR(1)这种最简单的时间序列模型,ARMA模型包括AR模型和MA模型两个部分,这里要详细介绍Box-Jenkins模型的观念(有些资料中把ARMA模型叫做Box-Jenkins模 ...
- 第三百节,python操作redis缓存-其他常用操作,用于操作redis里的数据name,不论什么数据类型
python操作redis缓存-其他常用操作,用于操作redis里的数据name,不论什么数据类型 delete(*names)根据删除redis中的任意数据类型 #!/usr/bin/env pyt ...
- Spring MVC 处理模型数据(@ModelAttribute)
SpringMVC中的模型数据是非常重要的,因为MVC中的控制(C)请求处理业务逻辑来生成数据模型(M),而视图(V)就是为了渲染数据模型的数据. 直白来讲,上面这句话的意思就是:当有一个查询的请求, ...
- SpringMvc:处理模型数据
SpringMvc提供了以下途径输出模型数据: -ModelAndView:处理方法返回值类型为ModelAndView,方法体即可通过该对象添加模型数据 -Map或Model:入参为org.spri ...
- 5、处理模型数据ModelAndView、Map、Model以及@SessionAttributes注解
Spring MVC提供了以下几种途径输出模型数据 —— ModelAndView: 处理方法返回值类型为ModelAndView时,方法体即可通过该对象添加模型数据.数据会添加到request域中. ...
- springmvc学习(五)——处理模型数据
Spring MVC 提供了以下几种途径输出模型数据: ModelAndView: 处理方法返回值类型为 ModelAndView 时, 方法体即可通过该对象添加模型数据Map 及 Model: 入参 ...
- Asp.Net MVC4.0 官方教程 入门指南之五--控制器访问模型数据
Asp.Net MVC4.0 官方教程 入门指南之五--控制器访问模型数据 在这一节中,你将新创建一个新的 MoviesController类,并编写代码,实现获取影片数据和使用视图模板在浏览器中展现 ...
- springMVC(6)---处理模型数据
springMVC(6)---处理模型数据 之前一篇博客,写个怎么获取前段数据:springMVC(2)---获取前段数据,这篇文章写怎么从后端往前端传入数据. 模型数据类型 ...
随机推荐
- SQL Server ->> 存储过程sp_rename重命名数据对象
1) 表转移Schema和重命名表 ALTER SCHEMA Stage TRANSFER dbo.Stage_AAA; EXEC sp_rename 'Stage.Stage_AAA', 'AAA' ...
- C# 调用 c++ 非托管dll时wchar类型参数的乱码处理
[DllImport("user32.dll", CallingConvention = CallingConvention.WinApi)] public static exte ...
- pip pip._vendor.urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool
设置超时时间: pip --default-timeout=100 install Pillow
- 第一次使用Git
这次的作业是关于GIT的,一开始我并不知道GIT是啥,百度了一下才知道Git是一个开源的分布式版本控制系统,可以有效.高速的处理从很小到非常大的项目版本管理. Git 是 Linus Torvalds ...
- GraphQL 到底怎么用?看看这个例子就知道了
转载自: https://www.infoq.cn/article/i5JMm54_aWrRZcem1VgH
- mac下配置Node.js开发环境、express安装、创建项目
mac下配置Node.js开发环境.express安装.创建项目 一.node.js的安装 去官网下载对应的平台版本就可以了,https://nodejs.org 二.express安装 sudo n ...
- Ajax实现异步操作实例_针对JSON格式的请求数据
最近写了一篇ajax异步操作XML格式的,今天就写关于json格式的. 一.简单了解Json 1. JSON有两种表示结构,对象和数组. 1.1 对象: { key1:value1, key2:val ...
- ids for this class must be manually assigned before calling save():
Caused by: javax.persistence.PersistenceException: org.hibernate.id.IdentifierGenerationException: i ...
- Android学习笔记_43_网络通信之文件断点上传
1.建立服务端,用于接收上传的文件.这里使用Socket,文件可能会比较大.采用多线程编程,防止并发. package com.socket.service; import java.io.File; ...
- 【题解】洛谷P3399 丝绸之路
我丑,话说在前头 题目: https://www.luogu.org/problemnew/show/P3399 一道挺简单的DP 思路不难想 但是蒟蒻总是写错初始化啥的 思路 定义f[i][j]为第 ...