首页资源分类应用软件matlab > matlab在时间序列分析中的应用

matlab在时间序列分析中的应用

已有 456763个资源

下载专区

上传者其他资源

文档信息举报收藏

标    签: matlab时间序列分析

分    享:

文档简介

 matlab在时间序列分析中的应用

文档预览

第 30 卷第 5 期          应    用    科    技           Vol. 30 , №. 5 2003 年 5 月          Applied  Science  and  Technology           May 2 003 文章编号 :1009 - 671X(2003) 05 - 0036 - 03 Matlab 在时间序列分析中的应用 王国锋1 ,王子良2 ,王太勇1 ,王双利1 (1. 天津大学 机电工程学院 ,天津  300072 ;2. 天津理工学院 ,天津  300191) 摘    要 :Matlab 强大的科学计算和可视化功能使其在各个领域中得到了广泛的应用. 采用 Matlab 进行时 间序列分析可以极大地简化编程工作 ,并具有界面友好 、操作方便的特点. 介绍了使用 Matlab 进行时间序列分 析的基本方法和步骤 ,并通过实例进行了说明. 关  键  词 :Matlab ;时间序列 ;谱分析 中图分类号 : TP39  文献标识码 :A Application of Matlab in time series analysis WAN G Guo2feng1 ,WAN G Zi2liang2 ,WAN G Tai2yong1 ,WANA G Shuang2li1 (1. School of Material Science and Engineering , Tianjin University , Tianjin 300072 ,China ;2. School of Mechanical Engineer2 ing , Tianjin 300191 ,China) Abstract :Because of t he calculating and visualizing ability , Matlab has been widely used in many fields. In t his paper , t he basic met hod of ARMA modeling was int roduced by using Matlab and t he corresponding ex2 ample was illust rated . An example for AR prediction and spect rum was given ,so as to prove t hat Matlab is very convenient for time series analysis. Key words :Matlab ;time series ;spect rum analysis   1984 年美国的 Mat hWorks 公司推出了 Mat2 lab ,在许多领域得到了充分的利用. 其强大的科 学计算与可视化功能 ,开放式的可扩展环境以及 其各种功能强大的工具箱 ( ToolBox) ,使得它成为 计算机辅助设计与分析 、算法研究和应用开发的 基本工具和首选平台. 时间序列分析是采用参数 模型对观测得到的有序随机数据进行分析的一种 处理方法 ,通过时间序列可以对系统的动态特性 进行分析 、对系统的状态进行预测 ,从而为系统的 状态监控和故障诊断提供依据. Matlab 工具箱中 包含了许多函数 ,借助于这些函数可以方便地实 现系统的时间序列分析. 1  时间序列分析原理及实现 时间序列分析 (autoRegressive movingAverage) 是对有序的随机数据 (信号) 处理的一种方法 ,它 的出发点是承认数据的有序性和相关性 ,通过数 据内部的相互关系来辨识系统的变化规律 ,它的 建模方法是将系统的输出看作是在白噪声输入下 的响应. 具体地讲 ,就是针对一组试验数据 ,建立 系统的参数模型 ,ARMA ( m , n) 的参数模型可以 表示为 : m n ∑ ∑ x ( t) + φτx ( t - τ) = φλσ( t - λ) (1) τ= 1 λ= 0 式中 : { x ( t) , x ( t - 1) , x ( t - 2) , . . . x ( t - m) } 为 有序的时间序列 ,{σ( t) ,σ( t - 1) , …, σ( t - λ) } 为 有序的白噪声序列 ,方程的左边为系统的自回归 部分 ,它反映了系统的固有特性 ,右边表示系统的 滑动平均部分 ,当 φτ = 0 时为 MA 模型 ,当φλ = 0 时为 AR 模型. 辨识系统模型参数的方法有很多 种 ,常用的方法主要有最小二乘法 、辅助变量法 、 Marple 法等. 根据不同的需要和研究对象可以采   收稿日期 :2002 - 07 - 17. 基金项目 :国家自然科学基金资助 (50175081) 作者简介 :王国锋 (1975 - ) ,男 ,博士后 ,主要研究方向 :虚拟制造 、智能诊断 、开放式数控. 第 5 期         王国锋 ,等 :Matlab 在时间序列分析中的应用 ·37 · 用不同的建模方法. 在建立了系统的模型后 ,可以 对系统的状态进行预测 、分析预测误差 、进行谱分 析. 关于这些算法的基本原理 ,可以参考文献[ 2~ 4 ] ,这些在 Matlab 中都提供了相应的函数. 采用 Matlab 进行时间序列分析主要包括 4 步. 1) 数据的读入 Matlab 采用类似于 C 语言的方式进行数据 的读入 ,可以直接从数据文件中将数据读到一个 矩阵中.   fid = fopen (fileName ,’r’) ; %打开一个 文件进行读写   data = f scanf (fid ,’%g’) ; %将数据读入 到 data 中   status = fclose (fid) ; %释放文件句柄 2) 建立模型 在获得所要分析的数据后可以对数据进行建 模 ,本文主要介绍 2 个函数 : th = ar ( y , n) ;        h = ivar ( y , n) ar ( y , n) 函数采用最小二乘法进行模型参数 的估计 ,该函数要求输入噪声为白噪声 ,当输入噪 声为色噪声时 ,不能保证模型参数的估计值的无 偏性和一致收敛性. 而 ivar ( y , n) 则采用最优辅 助变量的方法进行参数的估计 ,计算得到的参数 模型存放在 t h 中. t h 中的数据采用 Matlab 独有 的 THETA 格式模型进行定义. 通过 t h2arx ( ) 函 数可以得到模型参数和 THETA 格式的转换. 3) 模型分析 模型的分析包括模型的仿真 、预测及误差分 析和谱分析.   e = pe ( y , t h) ;   y1 = idsim ( y , t h) ;   y1 = predict ( y , t h) ;   y2 = t h2ff (t h) ; pe ( y , t h) 用于计算模型实测值与估计值之间 的误差 ,误差值存放在 e 中. idsim ( y ,t h) 对输入 的数据进行仿真 , 并将 仿 真 结 果 存 放 在 y1 中. predict ( y ,t h) 则针对模型的输入数据和模型格式 进行预测 ,并将预测值存放在 y1 中 ,t h2ff (t h) 可 以实现求数据的频响函数. 4) 图形输出 Matlab 提供了强大的数据输入输出的功能. 对数据的分析结果 ,可以采用图形的方式进行直 观的表示 ,常用的针对时间序列分析的绘图函数 有   Plot ( x , y1 , x , y2) ,在同一个图中对分 析结果进行表示.   Bodeplot ( e) ,直接画出波德图.   Ffplot ( e) ,画频谱图.   Nyqplot () ,画奈氏图. 2  Theta 模型参数 Theta 格式是 Matlab 系统辨识工具箱中通用 的参数模型格式 , Theta 模型的定义可以分为两 种 ,即基于输入输出表示的 Theta 模型和基于状 态空间表示的 Theta 模型. 基于输入输出的 Theta 模型可以对应各种输入输出参数模型 ,如 AR、 ARX、ARMA 、BJ 等 ;基于状态空间表示的 Theta 模型则与连续或离散状态空间参数模型对应 ,它 们的信息都以矩阵的形式存储 ,但模型信息数据 的组织结构不同. 在时间序列分析中 ,常用的是第 一种数据模型 ,其结构可以表示为 A ( q) y ( t) = B1 ( q) F1 ( q) u1 ( t - nk1) + Λ + B n ( q) Fn ( q) unu ( t - nknu) + C( D( q) q) e( t) (2) 公式 ( 2) 中 , A ( q) 、B ( q) 、F ( q) ( i = 1 , 2 , . . . , n) 、C ( q) 、D ( q) 为平移算子 q 的多项式 , 其阶次 分别为 na 、nbi 、nf i ( i = 1 , 2 , . . . , n) 、nc 、n d , n u 为系统的输入变量个数. 设 n 为所有多项式的阶 次之和 , 令 r = max ( n , 7 , 6 + 3 n u) , 则系统的输 入输出 Theta 模型格式为如下定义的 (3 + n) ×r 矩阵 ,矩阵中每行的内容表示为 1) 矩阵的第 1 行为估计方差 ,采样时间 T ,输 入个数 nu ,各个多项式的阶次 na 、nb 、nc 、nd 、 nf 、nk ; 2) 第 2 行为最终预测误差 FPE ,模型生成的 日期 、时间和命令 ; 3) 第 3 行为估计参数的向量 ,即 A 、B 、C 、D 、 F 的系数 ; 4) 第 4 行到第 3 + n 行为估计的方差矩阵 ; 5) 对于连续系统 ,该矩阵可能增加到 n + 4 行 ,其中包含系统的死区时间. 对于时间序列分析而言 ,在生成 Theta 模型 ·38 · 应    用    科    技             第 30 卷 以后 ,需要根据不同的需要对该模型进行分析 ,以 便从中提取所需的估计参数以及最终的误差. 3  应用实例 为了对上面的方法进行说明 ,采用 2 个实例 加以说明 ,第 1 个实例是针对一组实测的振动信 号进行分析建模并进行预测 ,预测值和实测值的 比较见图 1. 从图中可以看出信号的预测误差非 常小. 第 2 个实例对一个受噪声干扰的信号进行 时序建模 ,并进行谱分析 ,得到 AR 谱. 从最后的 谱图图 2 中可以看出 , AR 谱图非常光滑并且分 辨率很高. 2 个实例的源程序如下. 图 1  预测值与实测值的误差比较 for  i = 1 :lengt h (ata)  data ( i) = (data ( i) - p) / t d ; end N 1 = 1 :56 ; %选取数据段 t h = ivar (data (1 :56) ,5) ; %最优辅助变量法 建模 a = t h2arx (t h1) ; %转换模型参数 data1 = predict ( data (1 : 56) ,t h) ; %对数据进 行预测 e1 = pe (data (1 :56) ,t h) %计算预测误差 plot ( N 1 , data ( 1 : 56 ) ,’ - ’, N 1 , da2 ta1 ,’:’) %画图比较 实例 2 v = randn (301 ,1) ; %伪随机白噪声 y = sin([1 :300 ]’3 0. 8) + sin ([ 1 :300 ]’3 1. 8) + 0. 1 3 v ([ 1 :300 ]) + 0. 08 3 v ([ 2 :301 ]) ; %受噪 声干扰的信号 t hiv = ivar ( y ,4) ; %辅助变量法建模 giv = t h2ff (t hiv) ; %求频响函数 figur11) bodeplot (giv) %画波德图 grid on %打开网格 4  结  论 图 2  受干扰信号的 AR 谱   实例 1 clear %清除变量 fileName = ’C :/ data/ Mfile/ outa. dat ’; % 打 开数据文件 fid = fopen (fileName ,’r’) data = f scanf (fid ,’% g’) ; %读入数据 stat us = fclose (fid) ; p = sum (data) / lengt h (data) ; %预处理 t d = st d (data) 通过上面的实例可以看出 , 利用 Matlab 工 具 ,可以很方便地实现数据的时间序列建模 ,建模 精度高 、分析结果可靠 ,同时利用它强大的图形界 面功能可以很直观地进行数据的分析与比较. 当 然 ,并不是所有时间序列的问题都可以用 Matlab 内带的函数实现 ,有些需要用户自己编制响应的 程序. 但是 ,借助于它的强大的计算功能 ,可以很 方便地实现这些功能. 参 考 文 献: [1 ]  徐  听. Matlab 工具箱应用指南 ———控制工程篇 [ M ] . 北京 :人民邮电出版社 ,2000. [ 2 ]  黄世霖. 工程信号处理[ M ] . 北京 :人民交通出版社 , 1986. [ 3 ]  温熙森. 机械系统动态分析理论与应用 [ M ] . 长沙 : 国防科技大学出版社 ,1998. [ 4 ]  黄  仁. 机械设备工况监测与故障诊断 [ M ] . 南京 : 东南大学出版社 ,1990.

Top_arrow
回到顶部
EEWORLD下载中心所有资源均来自网友分享,如有侵权,请发送举报邮件到客服邮箱bbs_service@eeworld.com.cn 或通过站内短信息或QQ:273568022联系管理员 高进,我们会尽快处理。