主要内容

时间序列对象和集合

类型的时间序列及其用途

MATLAB®时间序列对象有两种类型:

  • timeseries——存储数据和时间值,以及元数据信息包括单位、事件、数据质量和插值方法

  • tscollection——商店的集合timeseries矢量对象共享一个共同的时间,方便执行同步操作时间序列具有不同的单位

本节讨论下列主题:

  • 利用时间序列构造器实例化时间序列类

  • 修改对象属性的使用方法或点符号

  • 调用时间序列函数和方法

得到一个快速概述的编程timeseriestscollection对象,遵循的步骤例如:时间序列对象和方法

时间序列数据样本

正确理解的描述timeseries对象属性和方法在这个文档,重要的是要澄清一些存储数据有关的条款timeseries对象的区别数据值和一个数据样本

一个数据值是一个标量值记录在一个特定时间。一个数据样本由一个或多个值与一个特定的时间timeseries对象。数据样本的数量在一个时间序列的时间向量的长度是一样的。

例如,考虑数据包括三个传感器的信号:两个信号代表一个对象的位置在米,第三个代表米/秒的速度。

输入数据矩阵,在MATLAB提示符下输入以下:

13 x = (-0.2 - -0.3;-0.1 - -0.4 15;南2.8 17;0.5 - 0.3南;-0.3 - -0.1 15]

值代表一个缺失的数据值。MATLAB 5-by-3矩阵显示以下信息:

x = -0.2000 -0.3000 13.0000 -0.1000 -0.4000 15.0000南南-0.3000 -0.1000 15.0000 2.8000 17.0000 0.5000 0.3000

的前两列x包含相同数量的单位,您可以创建一个多元timeseries这两个时间序列对象来存储。关于创造的更多信息timeseries对象,看到时间序列构造器。下面的命令创建一个timeseries对象ts_pos存储位置的值:

ts_pos = timeseries (x(:, 1:2), 1:5,“名字”,“位置”)

MATLAB响应通过显示以下的属性ts_pos:

timeseries共同的属性:名称:“位置”时间:把TimeInfo设为[5 x1双]:[1 x1 tsdata。timemetadata]数据:[5 x2双]DataInfo: [1 x1 tsdata。datametadata]更多的属性,方法

长度矢量,这是5在这个例子中,等于数据样本的数量timeseries对象。找到的数据样本的大小ts_pos通过输入下面的MATLAB提示:

getdatasamplesize ans (ts_pos) = 1 2

类似地,您可以创建第二个timeseries对象存储速度数据:

ts_vel = timeseries (x(:, 3), 1:5,“名字”,“速度”);

找到每个数据样本的大小ts_vel通过输入下面的:

getdatasamplesize ans (ts_vel) = 1 1

请注意,ts_vel有一个数据值在每个数据样本吗ts_pos有两个数据值在每个数据样本。

请注意

一般来说,当时间序列数据——- - - - - -N——- - - - - -P——-…多维数组和样品,每个数据样本的大小N——- - - - - -P——-…。

如果你想在执行操作ts_posts_veltimeseries对象,同时保持同步,将它们分组在一个时间序列集合。有关更多信息,请参见时间序列集合构造函数的语法

例如:时间序列对象和方法

创建时间序列对象

这部分的示例说明了如何创建几个timeseries从一个数组对象。更多的信息timeseries对象,看到时间序列构造器

导入示例数据count.datMATLAB的工作区。

负载count.dat

这增加了24-by-3矩阵,工作区。每一列的代表每小时的车辆计数每三个镇十字路口。

查看矩阵。

创建三个timeseries对象存储在每个路口收集的数据。

count1 = timeseries(计数(:1),桥,“名字”,“intersection1”);是从= timeseries(计数(:,2),桥,“名字”,“intersection2”);count3 = timeseries(计数(:,3),桥,“名字”,“intersection3”);

请注意

在上面的建筑,timeseries对象都有一个变量名(例如,count1)和一个内部对象名称(例如,intersection1)。变量名称是使用MATLAB函数。对象名称是一个属性的对象,访问对象方法。的更多信息timeseries对象的属性和方法,明白了时间序列属性时间序列方法

默认情况下,一个向量时间序列有一个时间单位秒,开始时间为0秒。这个例子构建count1,是从,count3时间序列对象1秒的开始时间,结束时间24秒,1秒的增量。你会更改单位小时的时间修改时间序列的单位和插值方法

请注意

如果你想创建一个timeseries三个数据列的对象组使用下面的语法:

count_ts = timeseries(数、桥、“名称”、“traffic_counts”)

这是有用的,当所有的时间序列具有相同的单位和你想让它们在计算同步。

修改时间序列的单位和插值方法

在创建一个timeseries描述的对象,如创建时间序列对象,您可以修改它的单位和插值方法使用点符号。

查看当前的属性count1

get (count1)

MATLAB显示的当前属性值count1timeseries对象。

查看当前DataInfo使用点符号属性。

count1.DataInfo

改变的数据单位count1“汽车”

count1.DataInfo。单位=“汽车”;

设置的插值方法count1为零。

count1.DataInfo。在terpolation = tsdata.interpolation(“zoh”);

验证DataInfo属性已经修改。

count1.DataInfo

修改的时间单位“小时”三个时间序列。

count1.TimeInfo。单位=“小时”;count2.TimeInfo。单位=“小时”;count3.TimeInfo。单位=“小时”;

定义事件

这部分的示例说明了如何定义为一个事件timeseries通过使用对象tsdata.event辅助对象。在特定的时间事件标志着数据。当你画出数据,事件标记显示在图。事件也同步多个时间序列提供了一种方便的方法。

添加两个事件的数据标志着次我上班和下午上下班。

构造并添加第一个事件时间序列。第一个事件发生在早上8点。

e1 = tsdata.event (“AMCommute”8);e1。单位=“小时”;%指定的单位时间count1 = addevent (count1, e1);% count1添加事件是从= addevent(是从,e1);%将事件添加到是从count3 = addevent (count3, e1);% count3添加事件

构造并添加第二个事件时间序列。第二个事件发生在下午6点。

e2 = tsdata.event (“PMCommute”,18);e2。单位=“小时”;%指定的单位时间count1 = addevent (count1、e2);% count1添加事件是从= addevent(是从,e2);%将事件添加到是从count3 = addevent (count3、e2);% count3添加事件

时间序列,count1

图绘制(count1)

情节的任何时间序列时,时间序列对象定义的阴谋方法显示事件作为标记。默认标记是红色的圆圈。

情节反映了count1使用零阶保持器插值。

情节是从

情节(是从)

如果你时间序列是从,它取代了count1显示。你看到它的事件,并使用线性插值。

覆盖时间序列的情节设置抓住

持有情节(count3)

创建时间序列集合对象

这部分的例子演示了如何创建一个tscollection对象。每个人在一组被称为时间序列成员。更多的信息tscollection对象,看到时间序列集合的构造函数

请注意

通常情况下,您使用tscollection对象组同步时间序列有不同的单位。在这个简单的示例中,所有时间序列有相同的单位和tscollection对象不提供一个优势这三个时间序列在一个分组timeseries对象。例如如何多个时间序列在一个组timeseries对象,看到创建时间序列对象

创建一个tscollection对象命名count_coll和使用构造函数语法立即添加两个三个时间序列目前在MATLAB工作区(稍后您将添加第三次系列)。

tsc = tscollection ({count1是从},“名字”,“count_coll”)

请注意

向量的时间timeseries添加到对象tscollection必须匹配。

请注意,的名字财产的timeseries对象是用来收集成员的名字intersection1intersection2

添加第三timeseries对象的工作区tscollection

count3 tsc = addts (tsc)

列出了所有三个集合中的成员。

重采样时间序列集合对象

这部分的示例说明了如何重新取样的每个成员tscollection使用一个新的时间向量。重采样操作是用来选择现有的数据在特定的时间值,或者插入数据更好的间隔。如果新的时间向量包含时间值,不存在在前面的向量,计算新的数据值使用默认的插值方法与时间序列相关。

重新取样时间序列包含数据值每2小时每小时和将其保存为一个新的tscollection对象。

1:2:24 tsc1 =重新取样(tsc)

在某些情况下,您可能需要一个比你现在更好的采样信息,通过插值获得它是合理的数据值。

插入的值在每个半小时。

1:0.5:24 tsc1 =重新取样(tsc)

添加值在每个半小时标记,默认使用时间序列的插值方法。例如,新数据点intersection1计算通过使用零级插值方法,该基金持有的价值之前样品常数。您设置的插值方法intersection1中描述的修改时间序列的单位和插值方法

新数据点intersection2intersection3使用线性插值计算,这是默认的方法。

情节的成员tsc1与标记插值的结果。

持有%允许轴之前策划情节(tsc1.intersection1“xb”,“Displayname的”,“十字路口1”)

你可以看到,数据点每隔半小时内插,十字路口1使用零阶保持器插值,而其他两个成员使用线性插值。

时保持图在图中添加另外两个成员的阴谋。因为情节方法抑制轴标签持有也添加一个传说描述三大系列。

持有情节(tsc1.intersection2. xm的,“Displayname的”,《十字路口2》)情节(tsc1.intersection3:xr的,“Displayname的”,《十字路口3》)传说(“显示”,“位置”,“西北”)

添加一个数据样本时间序列集合对象

这部分的例子说明了如何添加一个数据样本tscollection

添加一个数据样本intersection1在3.25小时(即集合成员。小时后15分钟)。

tsc1 = addsampletocollection (tsc1,“时间”,3.25,“intersection1”5);

有三个成员tsc1收藏,添加一个数据样本一个成员将一个数据样本添加到其他两个成员在3.25小时。然而,由于您没有指定的数据值intersection2intersection3在新的样本,缺失的值表示这些成员的年代。学习如何删除或插入缺失的数据值,明白了删除丢失的数据插值缺失的数据

tsc1数据从2.0到3.5小时

小时

十字路口1

十字路口2

十字路口3

2.0

7

13

11

2.5

7

15

15.5

3.0

14

17

20.

3.25

5

3.5

14

15

14.5

查看所有intersection1数据(包括新样品在3.25小时),类型

tsc1.intersection1

同样,查看所有intersection2数据(包括新样本包含在3.25小时值),类型

tsc1.intersection2

删除和插值缺失的数据

时间序列对象使用s代表缺失的数据。这部分的例子说明了如何删除缺失数据或插入值通过使用插值方法指定的时间序列。在添加一个数据样本时间序列集合对象,你添加了一个新的数据样本tsc1收集在3.25小时。

随着tsc1收藏有三个成员,一个成员添加一个数据样本数据样本添加到其他两个成员在3.25小时。然而,由于您没有指定的数据值intersection2intersection3成员在3.25小时,他们目前包含缺失值,为代表年代。

删除丢失的数据。找到并删除包含NaN值的数据样本tsc1收集。

tsc1 = delsamplefromcollection (tsc1,“指数”,找到(isnan (tsc1.intersection2.Data)));

这个命令搜索一个tscollection成员在一次这种情况,intersection2。当一个缺失值位于intersection2当时,数据被删除所有的成员tscollection

请注意

使用通过语法来访问数据财产的intersection2成员tsc1集合:

tsc1.intersection2.Data

的完整列表timeseries属性,看到时间序列属性

插值缺失的数据。为了这个例子中,恢复intersection2intersection3

tsc1 = addsampletocollection (tsc1,“时间”,3.25,“intersection1”5);

插入缺失的值tsc1使用当前时间向量(tsc1.Time)。

tsc1 =重新取样(tsc1 tsc1.Time);

这取代了intersection2intersection3通过使用线性interpolation-the违约对这些时间序列插值法。

请注意

点符号tsc1.Time是用于访问时间财产的tsc1收集。的完整列表tscollection属性,看到时间序列集合属性

查看intersection2插值后的数据,例如,类型

tsc1.intersection2

新的tsc1数据从2.0到3.5小时

小时

十字路口1

十字路口2

十字路口3

2.0

7

13

11

2.5

7

15

15.5

3.0

14

17

20.

3.25

5

16

17.3

3.5

14

15

14.5

移除一个时间序列的时间序列集合

删除intersection3时间序列的tscollection对象tsc1

tsc1 = removets (tsc1,“intersection3”)

两个时间序列集合中的成员现在上市。

显示时间矢量值日期字符串

这部分的示例说明了如何控制向量的数值的格式显示,使用MATLAB日期字符串。MATLAB的完整列表的时间字符串格式支持金宝apptimeseriestscollection对象,看到时间向量定义的定义timeseries参考页面。

使用日期字符串,你必须设置StartDate可以场的TimeInfo财产。所有值的使用时间向量转换为日期字符串StartDate可以作为参考的日期。

假设参考日期发生在2009年12月25日。

tsc1.TimeInfo。单位=“小时”;tsc1.TimeInfo。StartDate可以=“25 - 12月- 2009就是”;

类似于你的count1,是从,count3时间序列对象,设置的数据单位tsc1成员的字符串“车数”

tsc1.intersection1.DataInfo.Units =“车数”;tsc1.intersection2.DataInfo.Units =“车数”;

策划时间序列集合成员

绘制数据时间序列集合,你策划其成员一次。

第一个图tsc1成员intersection1

持有情节(tsc1.intersection1);

当你绘制一个时间序列集合的成员,显示在它的时间单位x设在及其数据显示在单位y设在。情节的标题是显示为“时间序列图:<成员名>”

如果你使用相同的图绘制一个不同集合的成员,没有注释显示。时间序列情节方法不尝试时更新标签和标题持有因为这个系列的描述符可以是不同的。

情节intersection1intersection2在同一图。防止覆盖情节,但删除轴标签和标题。添加一个传奇和设置DisplayName行系列标签每个成员的属性。

情节(tsc1.intersection1“xb”,“Displayname的”,“十字路口1”)举行情节(tsc1.intersection2. xm的,“Displayname的”,《十字路口2》)传说(“显示”,“位置”,“西北”)

情节现在包含了两个时间序列集合中:intersection1intesection2。策划第二图删除标签在第一图。

最后,在更改日期字符串x设在来小时再画出两个时间序列集合成员与一个传奇。

指定时间单位为“小时”的集合。

tsc1.TimeInfo。单位=“小时”;

指定的格式显示时间。

tsc1.TimeInfo。格式=“HH: MM”;

重现过去的情节与新的时间单位。

持有情节(tsc1.intersection1“xb”,“Displayname的”,“十字路口1”)%防止覆盖图,但删除轴标签和标题。持有情节(tsc1.intersection2. xm的,“Displayname的”,《十字路口2》)传说(“显示”,“位置”,“西北”)%恢复|的标签包含|和| ylabel |命令和覆盖%数据网格。包含(的时间(小时))ylabel (“车数”网格)

对时间序列绘图选项的更多信息,参见timeseries

时间序列构造器

之前实施的各种MATLAB函数和方法专门设计用于处理时间序列数据,您必须创建一个timeseries对象来存储数据。看到timeseriestimeseries对象构造函数的语法。

使用构造函数的一个例子,看到创建时间序列对象

时间序列属性

看到timeseries所有的描述timeseries对象属性。您可以指定数据,IsTimeFirst,的名字,质量,时间属性作为输入参数的构造函数。分配其他属性,使用函数或点符号。

请注意

从命令行属性信息,类型帮助timeseries / tsprops在MATLAB提示。

对编辑的一个例子timeseries对象属性,看修改时间序列的单位和插值方法

时间序列方法

所有的时间序列方法的描述,看看timeseries

时间序列集合的构造函数

介绍

MATLAB对象,调用tscollection,是一个MATLAB变量组数向量时间序列与一个共同的时间。的timeseries中包含的对象tscollection对象被称为成员这个集合,有几种方法方便分析和操纵timeseries

时间序列集合构造函数的语法

在你实现MATLAB方法专门设计的操作的集合timeseries对象,您必须创建一个tscollection对象来存储数据。

下面的表总结了使用的语法tscollection构造函数。使用此构造函数的一个例子,看到创建时间序列集合对象

时间序列集合的语法描述

语法

描述

tsc = tscollection (ts)

创建一个tscollection对象tsc包括一个或多个timeseries对象。

ts参数可以是下列之一:

  • timeseriesMATLAB的工作区中对象

  • 单元阵列的timeseriesMATLAB工作区中的对象

timeseries对象共享相同的向量tscollection

tsc = tscollection(时间)

创建一个空tscollection对象的时间向量时间

当时间值是日期字符串,您必须指定时间单元阵列的日期字符串。

tsc = tscollection(时间、TimeSeries“参数”,价值,…)

可选输入以下参数值对后时间TimeSeries参数:

时间序列集合属性

此表列出的属性tscollection对象。您可以指定的名字,时间,TimeInfo属性作为输入参数tscollection构造函数。

时间序列集合属性描述

财产

描述

的名字

tscollection对象名称输入为一个字符串。这个名字可以不同的名称tscollectionMATLAB的工作区中变量。

时间

一个向量的时间值。

TimeInfo.StartDate是空的,数值吗时间测量值相对于0指定单位。当TimeInfo.StartDate定义,时间值代表日期字符串测量相对于StartDate可以在指定的单位。

的长度时间必须匹配第一个或最后一个尺寸的吗数据财产的tscollection成员。

TimeInfo

使用以下字段来存储上下文信息时间:

  • 单位——时间单位有下列值:“周”,“天”,“小时”,“分钟”,“秒”,的毫秒,微秒的,“纳秒”

  • 开始——开始时间

  • 结束——结束时间(只读)

  • 增量——两次之间间隔时间值。增加时候不均匀采样。

  • 长度向量的时间长度(只读)

  • 格式——定义日期显示格式字符串的字符串。看到MATLABdatestr函数引用页面获取更多信息。

  • StartDate可以——日期字符串定义参考日期。看到MATLABsetabstime函数引用页面获取更多信息。

  • 用户数据——存储任何额外的用户定义的信息

时间序列集合的方法

一般的时间序列集合的方法。使用以下方法来查询和设置对象属性,并画出数据。

方法查询属性

方法

描述

得到

查询tscollection对象属性值。

isempty

评估,真正的为空tscollection对象。

长度

返回时间向量的长度。

情节

图中的时间序列集合。

tscollection属性值。

大小

返回的大小tscollection对象。

数据和时间操作方法。使用以下方法来添加或删除数据样本,和操纵tscollection对象。

操作数据的方法和时间

方法

描述

addts

添加一个timeseries对象一个tscollection对象。

addsampletocollection

添加数据样本tscollection对象。

delsamplefromcollection

删除一个或多个数据样本tscollection对象。

getabstime

提取的时间字符串时间从一个向量tscollection对象单元阵列。

getsampleusingtime

现有的样本中提取数据tscollection对象到一个新的tscollection对象。

gettimeseriesnames

返回一个单元阵列的时间序列的名字tscollection对象。

horzcat

横向连接的tscollection对象。结合几timeseries同时向量为一个时间序列的对象集合。

removets

删除一个或多个timeseries从一个对象tscollection对象。

重新取样

选择或插入数据tscollection对象使用一个新的时间向量。

setabstime

设置时间值的时间向量tscollection对象作为日期字符串。

settimeseriesnames

改变选择的名称timeseries对象在一个tscollection对象。

vertcat

垂直连接的tscollection对象。连接数tscollection对象在时间维度。