马铃薯®时间序列对象是两种类型:
timeseries
- 存储数据和时间值,以及包括单位,事件,数据质量和插值方法的元数据信息
TSCollection.
- 存储一系列timeseries
共享一个公共时间向量的对象,便于对具有不同单位的同步时间序列进行操作
本节讨论以下主题:
使用时间序列构造函数实例化时间序列类
使用以下命令修改对象属性放
方法或点记数法
调用时间序列功能和方法
快速快速概述编程timeseries
和TSCollection.
对象,按照步骤进行操作示例:时间序列对象和方法.
正确理解的描述timeseries
对象属性和方法在本文档中,重要的是要澄清与存储数据相关的一些术语timeseries
对象——a和b之间的区别数据值A.数据样本.
一种数据值是在特定时间记录的单个标量值。一种数据样本属性中与特定时间关联的一个或多个值timeseries
目的。时间序列中的数据样本的数量与时间向量的长度相同。
例如,考虑由三个传感器信号组成的数据:两个信号代表米为单位的物体的位置,第三个信号表示其速度/秒的速度。
要输入数据矩阵,请在MATLAB提示符下键入以下内容:
x = [-0.2 -0.3 13;-0.1 -0.4 15;南2.8 17;0.5 0.3楠;-0.3 -0.1 15]
这南
值表示缺少的数据值。MATLAB显示以下5×3矩阵:
X = -0.2000 -0.3000 13.0000 -0.1000 -0.4000 15.0000 NAN 2.8000 17.0000 0.5000 0.3000 NAN -0.3000 -0.1000 15.0000
前两列X
包含具有相同单元的数量,您可以创建多变量timeseries
对象来存储这两个时间序列。有关创建的更多信息timeseries
对象,参见时间序列构造函数.下面的命令创建一个timeseries
目的TS_POS.
存储位置值:
ts_pos = timeeries(x(:,1:2),1:5,'name','位置')
Matlab通过显示以下属性来响应TS_POS.
:
timeseries常用属性:Name: 'Position' Time: [5x1 double] TimeInfo: [1x1 tsdata. Properties]DataInfo: [1x1 tsdata. timemetdata] Data: [5x2 double] Data: [1x1 tsdata. timemetdata]更多属性,方法
这长度
时间向量,即5.
在本例中,等于timeseries
目的。找到数据示例的大小TS_POS.
通过在MATLAB提示符下键入以下内容:
Getdatasamplesize (ts_pos) ans = 1
类似地,您可以创建第二个timeseries
要存储速度数据的对象:
ts_vel = timeseries (x(:, 3), 1:5,“名字”,“速度”);
找出每个数据样本的大小Ts_vel.
通过键入以下内容:
getDatasamplesze(ts_vel)ans = 1 1
注意Ts_vel.
每个数据样本中有一个数据值和TS_POS.
在每个数据样本中有两个数据值。
笔记
一般来说,当时间序列数据是m-经过-N-经过-P.- 来自多维数组m样本,每个数据样本的大小是N-经过-P.-经过-... 。
如果要执行操作TS_POS.
和Ts_vel.
timeseries
对象在保持它们同步时,将它们分组在时间序列集合中。有关更多信息,请参阅时间序列收集构造函数语法.
该示例的这部分说明了如何创建几个timeseries
来自数组的对象。有关的更多信息timeseries
对象,看到时间序列构造函数.
导入示例数据count.dat
到Matlab工作区。
加载count.dat
这增加了24×3矩阵,数数
,工作区。每列数数
代表三个城镇交叉口中的每一个的每小时车辆计数。
查看数数
矩阵。
数数
创造三个timeseries
存储在每个交叉路口收集的数据的对象。
count1 = timeeries(count(:,1),1:24,'名称'那“intersection1”);count2 = timeeries(count(:,2),1:24,'名称'那'intersection2');Count3 = timeseries(count(:,3), 1:24,'名称'那'intersection3');
笔记
在上面的建设中,timeseries
对象具有变量名称(例如,count1
)和内部对象名称(例如,交叉口1
)。变量名称与MATLAB函数一起使用。对象名称是对象的属性,并使用对象方法访问。有关的更多信息timeseries
对象属性和方法,参见时间序列属性和时间序列方法.
默认情况下,时间序列有一个具有秒数的时间向量和0秒的开始时间。示例构造了count1
那是从
, 和count3
时间序列对象具有1秒的开始时间,结束时间为24秒,而1秒增量。您将在几小时内更改时间单位修改时间序列单元和插值方法.
笔记
如果你想创建一个timeseries
将三个数据列分组的对象数数
,使用以下语法:
count_ts = timeeries(count,1:24,'name','traffic_counts')
当所有时间序列具有相同的单位时,这很有用,并且您希望将它们保持在计算期间同步。
创建A后timeseries
对象,如上所述创建时间序列对象,您可以在变量编辑器中查看它。
查看A.timeseries
对象count1
在Variables编辑器中,使用以下方法之一:
类型打开(“count1”)
在命令提示符下。
在家标签,在多变的部分中,点击打开变量并选择count1
.中无法使用此方法MATLAB在线™.
创建A后timeseries
对象,如上所述创建时间序列对象,您可以使用点表示法修改其单位和插值方法。
查看当前属性count1
.
得到(count1)
MATLAB显示当前的属性值count1
timeseries
目的。
查看当前DataInfo
使用点表示法的属性。
count1.datainfo.
更改数据单位count1
来'汽车'
.
count1.DataInfo。单位='汽车';
设置插值方法count1
零阶保持。
count1.DataInfo。在terpolation = tsdata.interpolation('ZOH');
验证DataInfo
属性已被修改。
count1.datainfo.
修改时间单位'小时'
对于三个时间序列。
count1.timeinfo.units =.'小时';count2.timeinfo.units ='小时';count3.TimeInfo。单位='小时';
该示例的这部分说明了如何定义一个事件timeseries
通过使用的对象Tsdata.Event.
辅助物体。事件在特定时间标记数据。当您绘制数据时,绘图上会显示事件标记。事件还提供了一种方便的方法来同步多个时间序列。
向标记AM和PM通勤时间的数据中添加两个事件。
构造并将第一个事件添加到所有时间序列。第一个活动发生在上午8点。
e1 = tsdata.event(“AMCommute”,8);e1.units =.'小时';%指定时间单位count1 = addevent(count1,e1);%将事件添加到count1count2 = addevent(count2,e1);%将事件添加到count2count3 = AddEvent(Count3,E1);%将事件添加到count3
构造并将第二个事件添加到所有时间序列。第二次活动发生在下午6点。
e2 = tsdata.event(“PMCommute”,18);e2.units =.'小时';%指定时间单位count1 = addevent (count1、e2);%将事件添加到count1count2 = addevent(count2,e2);%将事件添加到count2count3 = AddEvent(Count3,E2);%将事件添加到count3
绘制时间序列,count1
.
图绘制(count1)
绘制任何时间序列时,为时间序列对象定义的绘图方法将事件显示为标记。默认情况下标记是红色填充圆圈。
情节反映了这一点count1
使用零阶保持器插值。
阴谋是从
.
情节(Count2)
如果你绘制时间序列是从
,它代替了count1
展示。您看到了它的事件,它使用线性插值。
通过设置覆盖时间序列曲线抓住
.
抓住在绘图(Count3)
该示例的这部分说明了如何创建一个TSCollection.
目的。集合中的每个时间序列都被称为a成员.有关的更多信息TSCollection.
对象,看到时间序列收集构造器.
笔记
通常,你会使用TSCollection.
对象与组的组同步时间序列具有不同的单位。在这个简单的例子中,所有时间序列都有相同的单位和TSCollection.
对象不提供在单个中对三个时间序列进行分组的优势timeseries
目的。有关如何在一个中分组多个时间序列的示例timeseries
对象,看到创建时间序列对象.
创建一个TSCollection.
对象命名count_coll
并使用构造函数语法立即添加当前在Matlab工作区中的三个时间序列中的两个(您稍后将添加第三次)。
tsc = tscollection({count1 count2},'名称'那'count_coll')
笔记
时间向量timeseries
您正在添加的对象TSCollection.
必须匹配。
请注意,的名字
财产的财产timeseries
对象用于将收集成员命名为交叉口1
和交叉口2.
.
添加第三个timeseries
在工作区中的对象TSCollection.
.
TSC = Addts(TSC,Count3)
集合中的所有三位成员都列出。
该示例的这部分说明了如何重新确定每个成员TSCollection.
使用新的时间向量。重采样操作用于在特定时间值中选择现有数据,或以更精细的间隔内插入数据。如果新的时间向量包含在前一次向量中不存在的时间值,则使用与时间序列相关联的默认插值方法计算新的数据值。
重新确定时间序列,以包括每2小时而不是每小时的数据值,并将其另存为新的TSCollection.
目的。
TSC1 =重组(TSC,1:2:24)
在某些情况下,您可能需要更精细的信息采样,而不是您目前拥有的信息,并且通过内插数据值获得它是合理的。
在每个半小时标记处插入值。
TSC1 =重组(TSC,1:0.5:24)
要在每个半小时标记处添加值,使用时间序列的默认插值方法。例如,新数据点交叉口1
通过使用零阶保持插值方法计算,该方法保持先前样本常量的值。您设置了插值方法交叉口1
如上所述修改时间序列单元和插值方法.
新数据点交叉口2.
和交叉口3.
使用线性插值计算,这是默认方法。
绘制成员TSC1.
用标记看看插值的结果。
抓住离开%允许轴在绘制之前清除情节(tsc1.intersection1“xb”那'显示名称'那'十字路口1')
您可以看到数据点以半小时间隔内插,并且交叉点1使用零阶保持插值,而另外两个成员使用线性插值。
在将其他两个成员添加到绘图时,请在图中保持图形。因为这阴谋
方法抑制轴标签抓住
是在
,还加了一个图例来描述这三个系列。
抓住在绘图(TSC1.Intersection2,'-.xm'那'显示名称'那《十字路口2》)绘图(TSC1.Intersection3,':XR'那'显示名称'那《十字路口3》)传说('显示'那“位置”那“西北”)
该示例的这部分说明了如何将数据样本添加到aTSCollection.
.
将数据样本添加到交叉口1
收集会员3.25小时(即小时后15分钟)。
TSC1 = AddSampletocollection(TSC1,“时间”,3.25,...“intersection1”5);
有三个成员TSC1.
集合,并将数据样本添加到一个成员将数据样本添加到其他两个成员3.25小时。但是,因为您没有指定数据值交叉口2.
和交叉口3.
在新的示例中,缺失的值由南
S表示这些成员。要学习如何删除或插入丢失的数据值,请参见删除缺少的数据和插值缺失的数据.
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 |
查看全部交叉口1
数据(包括3.25小时的新样本),类型
TSC1.Intersection1.
同样,查看所有交叉口2.
数据(包括包含a的3.25小时的新样本南
值类型
tsc1.intersection2
时间序列对象使用南
表示丢失的数据。示例的这一部分说明了如何使用为该时间序列指定的插值方法来删除丢失的数据或为其插入值。在将数据示例添加到时间序列收集对象,您将新的数据示例添加到TSC1.
收集3.25小时。
作为TSC1.
集合有三个成员,将数据样本添加到一个成员,将数据示例添加到其他两个成员3.25小时。但是,因为您没有指定数据值交叉口2.
和交叉口3.
成员3.25小时,他们目前包含缺失的值,由此表示南
年代。
删除缺失的数据。查找并删除包含NaN值的数据样本TSC1.
收藏。
tsc1 = delsamplefromcollection (tsc1,'指数'那...找到(isnan (tsc1.intersection2.Data)));
这个命令搜索一个TSCollection.
会员在这种情况下 -交叉口2.
.当缺失的值位于交叉口2.
,此时的数据将被删除全部成员TSCollection.
.
插值缺失的数据。为了这个例子,重新引入南
值交叉口2.
和交叉口3.
.
TSC1 = AddSampletocollection(TSC1,“时间”,3.25,...“intersection1”5);
插入缺失的值TSC1.
使用当前时间向量(tsc1.time.
)。
tsc1 =重新取样(tsc1 tsc1.Time);
这取代了南
值交叉口2.
和交叉口3.
通过使用线性插值 - 这些时间序列的默认插值方法。
笔记
点表示法tsc1.time.
用于访问时间
财产的财产TSC1.
收藏。对于完整的列表TSCollection.
属性,参见时间序列收集属性.
查看交叉口2.
插值后的数据,例如类型
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 |
删除交叉口3.
时间序列TSCollection.
目的TSC1.
.
tsc1 = removets(tsc1,'intersection3')
现在列出了两个时间序列作为集合中的成员。
该示例的这部分说明了如何控制使用MATLAB日期字符串的数字时间向量显示的格式。有关支持的MATLAB日期字符串格式的完整列表金宝apptimeseries
和TSCollection.
对象,见时间矢量定义中的定义timeseries
参考页面。
要使用日期字符串,必须设置开始日期
场面的领域TimeInfo.
财产。使用。将时间向量中的所有值转换为日期字符串开始日期
作为参考日期。
假设参考日期发生在2009年12月25日。
tsc1.timeinfo.units =.'小时';tsc1.timeinfo.startdate =.'25 -dec-2009 00:00:00';
类似于你做的count1
那是从
, 和count3
时间序列对象,将数据单元设置为TSC1.
成员到弦'汽车数'
.
tsc1.intersection1.datainfo.units ='汽车数';tsc1.intersection2.datainfo.units ='汽车数';
要在时间序列集合中绘制数据,您会一次一个成员绘制。
第一图TSC1.
成员交叉口1
.
抓住离开情节(tsc1.intersection1);
当您绘制时间序列集合的成员时,其时间单位显示在X
-轴及其数据单位显示在y
-轴。绘图标题显示为'时间序列图:
.
如果使用相同的图形来绘制集合的不同成员,则不会显示注释。时间序列阴谋
方法不会尝试更新标签和标题抓住
是在
因为系列的描述符可以不同。
阴谋交叉口1
和交叉口2.
在同一个图中。防止覆盖绘图,但删除轴标签和标题。添加一个图例并设置显示名称
线系列的属性标记每个成员。
情节(tsc1.intersection1“xb”那'显示名称'那'十字路口1') 抓住在绘图(TSC1.Intersection2,'-.xm'那'显示名称'那《十字路口2》)传说('显示'那“位置”那“西北”)
绘图现在包括集合中的两个时间序列:交叉口1
和intesection2.
.绘制第二图擦除了第一图中的标签。
最后,更改日期字符串X
设在来小时
并再次用图例绘制两个时间序列收集成员。
指定集合为“小时”的时间单位。
tsc1.timeinfo.units =.'小时';
指定显示时间的格式。
tsc1.timeinfo.format =“HH: MM”;
使用新的时间单位重新创建最后一个绘图。
抓住离开情节(tsc1.intersection1“xb”那'显示名称'那'十字路口1')%防止覆盖绘图,但删除轴标签和标题。抓住在绘图(TSC1.Intersection2,'-.xm'那'显示名称'那《十字路口2》)传说('显示'那“位置”那“西北”)%恢复标签| xlabel |和| ylabel |命令和覆盖a%数据网格。Xlabel('时间(小时)')ylabel('汽车数') 网格在
有关绘制时间序列选项的更多信息,请参阅timeseries
.
在实现各种专用于处理时间序列数据的MATLAB函数和方法之前,必须创建一个timeseries
对象来存储数据。看timeseries
为了timeseries
对象构造函数语法。
有关使用构造函数的示例,请参阅创建时间序列对象.
看timeseries
对于所有的描述timeseries
对象属性。您可以指定数据
那istimefirst
那的名字
那质量
, 和时间
属性作为构造函数中的输入参数。要分配其他属性,请使用放
功能或点表示法。
笔记
要从命令行获取属性信息,请键入帮助Temseries / Tsprops
在MATLAB提示符处。
有关编辑的一个例子timeseries
对象属性,见修改时间序列单元和插值方法.
有关所有时间序列方法的描述,请参阅timeseries
.
matlab对象,称为TSCollection.
,是一个MATLAB变量,它用一个共同的时间向量对多个时间序列进行分组。这timeseries
您包含的对象TSCollection.
对象被称为成员并具有多种方法,便于分析和操作timeseries
.
在实现专门设计用于在集合上运行的MATLAB方法timeseries
对象,您必须创建一个TSCollection.
对象来存储数据。
下表总结了使用的语法TSCollection.
构造函数。有关使用此构造函数的示例,请参见创建时间序列收集对象.
时间序列收集语法描述
句法 |
描述 |
---|---|
|
创建一个 这
这 |
|
创建一个空 时间值为日期字符串时,必须指定 |
|
可选地在后面输入以下参数值对
|
此表列出了属性TSCollection.
目的。您可以指定的名字
那时间
, 和TimeInfo.
属性作为输入参数TSCollection.
构造函数。
时间序列收集属性描述
财产 |
描述 |
---|---|
|
|
|
时间值的矢量。 当 长度 |
|
使用以下字段存储有关的上下文信息 |
一般时间序列收集方法。使用以下方法查询和设置对象属性,并绘制数据。
查询属性的方法
数据和时间操纵方法。使用以下方法添加或删除数据样本,并操纵TSCollection.
目的。
操作数据和时间的方法
方法 |
描述 |
---|---|
添加A. |
|
将数据样本添加到a |
|
从a中删除一个或多个数据示例 |
|
从a中提取日期串时间向量 |
|
从现有的提取数据样本 |
|
返回一个单元格数组序列名称 |
|
水平串联 |
|
删除一个或多个 |
|
中选择或插入数据 |
|
设置A的时间向量中的时间值 |
|
更改所选对象的名称 |
|
垂直串联 |