时间表是一种表类型,用于将时间与每一行进行关联。您可以使用时间表下标,以不同的方式选择其数据子集。要选择行时间位于给定的时间范围内的时间表行,请使用 timerange 函数指定时间范围。由于时间表是一个表,因此您可以使用圆括号或花括号对行和变量建立索引。您可以对特定的行时间进行索引,也可以选择行时间与位于您使用 withtol 函数设置的容差范围内的指定时间匹配的行。您也可以为表或时间表建立下标,以选择与使用 vartype 函数指定的类型匹配的所有变量。最后,使用 Variables 属性将时间表中的数据提取到矩阵中。

基于文件创建时间表

基于样本文件 outages.csv 创建一个时间表,该文件包含表示美国电力中断的数据。使用 readtable 函数读取该文件中的表。将 T.Cause 和 T.Region 转换成分类数组。然后,使用 table2timetable 函数将表转换为时间表。显示时间表的前五行。TT 是一个时间表,其中包含从 2002 年 2 月到 2014 年 1 月的断电数据。

T = readtable('outages.csv');
T.Cause = categorical(T.Cause);
T.Region = categorical(T.Region);
TT = table2timetable(T);
TT(1:5,:)
ans=5×5 timetableOutageTime        Region       Loss     Customers     RestorationTime          Cause     ________________    _________    ______    __________    ________________    _______________2002-02-01 12:18    SouthWest    458.98    1.8202e+06    2002-02-07 16:50    winter storm   2003-01-23 00:49    SouthEast    530.14    2.1204e+05                 NaT    winter storm   2003-02-07 21:15    SouthEast     289.4    1.4294e+05    2003-02-17 08:14    winter storm   2004-04-06 05:44    West         434.81    3.4037e+05    2004-04-06 06:10    equipment fault2002-03-16 06:18    MidWest      186.44    2.1275e+05    2002-03-18 23:23    severe storm

汇总时间表并访问行时间

显示 TT 的摘要。该摘要是一个时间表,其中包含 1468 行和五个变量。

summary(TT)
RowTimes:OutageTime: 1468x1 datetimeValues:Min         2002-02-01 12:18 Median      2010-03-18 21:05 Max         2014-01-15 02:41 Variables:Region: 1468x1 categoricalValues:MidWest        142   NorthEast      557   SouthEast      389   SouthWest       26   West           354   Loss: 1468x1 doubleValues:Min             0       Median          180.26  Max             23418   NumMissing      604     Customers: 1468x1 doubleValues:Min             0           Median          75765       Max             5.9689e+06  NumMissing      328         RestorationTime: 1468x1 datetimeValues:Min             2002-02-07 16:50  Median          2010-03-31 10:54  Max             2042-09-18 23:31  NumMissing      29                Cause: 1468x1 categoricalValues:attack                294   earthquake              2   energy emergency      188   equipment fault       156   fire                   25   severe storm          338   thunder storm         201   unknown                24   wind                   95   winter storm          145

访问行时间。行时间不在变量中,行时间向量只是时间表的一个属性。但是,您可以使用圆点语法访问行时间。TT.OutageTime 是一个 1468×1 的日期时间值向量。显示 TT.OutageTime 的前五行。

TT.OutageTime(1:5)
ans = 5x1 datetime2002-02-01 12:182003-01-23 00:492003-02-07 21:152004-04-06 05:442002-03-16 06:18

对时间范围建立下标

要选择位于某个时间范围内的所有时间表行,请使用 timerange 函数创建下标来作为帮助。您指定的开始时间和结束时间不必与时间表中的任何行时间匹配。

选择断电发生在 2002 年 1 月到 2003 年 12 月之间的所有行。显示 TT2 的前五行。

TR = timerange('2002-01-01','2003-12-31');
TT2 = TT(TR,:);
TT2(1:5,:)
ans=5×5 timetableOutageTime        Region       Loss     Customers     RestorationTime        Cause    ________________    _________    ______    __________    ________________    ____________2002-02-01 12:18    SouthWest    458.98    1.8202e+06    2002-02-07 16:50    winter storm2003-01-23 00:49    SouthEast    530.14    2.1204e+05                 NaT    winter storm2003-02-07 21:15    SouthEast     289.4    1.4294e+05    2003-02-17 08:14    winter storm2002-03-16 06:18    MidWest      186.44    2.1275e+05    2002-03-18 23:23    severe storm2003-06-18 02:49    West              0             0    2003-06-18 10:54    attack

显示 TT2 的后五行。

TT2(end-4:end,:)
ans=5×5 timetableOutageTime        Region       Loss     Customers     RestorationTime          Cause      ________________    _________    ______    __________    ________________    ________________2003-09-02 19:46    SouthEast         0             0    2003-09-16 22:25    severe storm    2003-09-15 14:56    MidWest       418.7         61045    2003-09-22 04:21    thunder storm   2003-09-24 22:43    SouthWest    2576.9    9.4873e+05    2003-09-25 14:46    severe storm    2003-09-18 10:40    SouthWest     301.8    2.3973e+05    2003-09-27 08:17    severe storm    2003-10-11 19:36    SouthEast     309.8         93582    2003-10-11 19:49    energy emergency

TT2 是一个仅具有 98 行的时间表,其中只包含 2002 年和 2003 年的断电数据。

对指定时间进行索引

您可以使用表示 TT.OutageTime 中的特定时间的日期时间值或字符向量对 TT 进行索引。但是,当您执行此操作时,所指定的时间必须在时间向量中具有完全匹配项,并且只选择这些时间。根据 TT 的第一行和第三行的时间对 TT 进行索引。

TT({'2002-02-01 12:18:00','2003-02-07 21:15:00'},:)
ans=2×5 timetableOutageTime        Region       Loss     Customers     RestorationTime        Cause    ________________    _________    ______    __________    ________________    ____________2002-02-01 12:18    SouthWest    458.98    1.8202e+06    2002-02-07 16:50    winter storm2003-02-07 21:15    SouthEast     289.4    1.4294e+05    2003-02-17 08:14    winter storm

使用容差对指定时间进行索引

对时间进行索引时指定一个容差。您可以使用 withtol 函数创建下标来作为帮助。通过 withtol 的输出,您可以选择在指定容差范围内匹配的行时间。

在指定日期对 TT 进行索引。指定一天的容差,以返回行时间位于指定日期中的一天范围内的行。时间必须位于日期时间或持续时间向量中,或者位于可转换为日期时间或持续时间值的字符向量元胞数组中。必须使用 seconds、minutes、hours 或 days 等函数将容差指定为持续时间。

rowTimes = {'2002-02-01','2003-02-07'};
S = withtol(rowTimes,days(1));
TT(S,:)
ans=2×5 timetableOutageTime        Region       Loss     Customers     RestorationTime        Cause    ________________    _________    ______    __________    ________________    ____________2002-02-01 12:18    SouthWest    458.98    1.8202e+06    2002-02-07 16:50    winter storm2003-02-07 21:15    SouthEast     289.4    1.4294e+05    2003-02-17 08:14    winter storm

按变量类型建立下标

要选择具有给定类型的所有时间表变量,请使用 vartype 函数创建下标来作为帮助。您可以指定变量类型,而不必指定变量的名称或变量在时间表中的位置。

选择包含数值数据的所有变量。TT2 只包含变量 Loss 和 Customers。TT 的其他三个变量为分类变量或日期时间变量。显示 TT2 的前五行。

S = vartype('numeric');
TT2 = TT(:,S);
TT2(1:5,:)
ans=5×2 timetableOutageTime        Loss     Customers ________________    ______    __________2002-02-01 12:18    458.98    1.8202e+062003-01-23 00:49    530.14    2.1204e+052003-02-07 21:15     289.4    1.4294e+052004-04-06 05:44    434.81    3.4037e+052002-03-16 06:18    186.44    2.1275e+05

同时根据时间范围和变量类型建立下标。

TR = timerange(‘2002-01-01’,‘2003-12-31’);
TT2 = TT(TR,S);
TT2(1:5,:)
ans=5×2 timetable
OutageTime Loss Customers
________________ ______ __________

2002-02-01 12:18    458.98    1.8202e+06
2003-01-23 00:49    530.14    2.1204e+05
2003-02-07 21:15     289.4    1.4294e+05
2002-03-16 06:18    186.44    2.1275e+05
2003-06-18 02:49         0             0

通过 Variables 属性提取数据

表和时间表具有一个 Variables 属性,您可以使用该属性将数据从变量提取到矩阵中,只要变量可以串联在一起。

使用 Variables 属性从 TT2 提取数值数据。A 是一个 1468×2 的双精度矩阵。当您将数据从时间表提取到数组中时,行时间不包含在内。

A = TT2.Variables;
A(1:5,:)
ans = 5×2
106 ×0.0005    1.82020.0005    0.21200.0003    0.14290.0002    0.21280         0

TT2.Variables 的结果与使用花括号通过 TT2{:,:} 语法提取数据的结果相同。

您可以将 TT2 中的变量串联到双精度数组中。但是,TT 包含无法串联的数值变量、分类变量和日期时间变量。无法串联变量时,Variables 属性将会返回错误。要避免此类错误,您可以在使用 Variables 属性之前根据变量类型建立下标。

为 TT 建立下标,以选择数值变量并将它们提取到矩阵中。

A = TT(:,vartype('numeric')).Variables;
A(1:5,:)
ans = 5×2
106 ×0.0005    1.82020.0005    0.21200.0003    0.14290.0004    0.34040.0002    0.2128

MATLAB 基础知识 数据类型 时间表 按行时间和变量类型选择时间表数据相关推荐

  1. MATLAB 基础知识 数据类型 时间表 创建时间表

    本文演示如何创建时间表.合并时间表以及将多个时间表中的数据调整到一个公共时间向量中.公共时间向量可以包含其中一个时间表或两个时间表中的时间,也可以是一个您指定的全新时间向量.以下示例演示如何计算和显示 ...

  2. MATLAB 基础知识 数据类型 表 添加、删除和重新排列表变量

    本文说明如何在表中添加.删除和重新排列列向变量.您可以使用 addvars.movevars 和 removevars 函数添加.移动和删除表变量.作为备选方法,您还可以使用圆点语法或对表进行索引来修 ...

  3. MATLAB 基础知识 数据类型 表 创建和使用表

    本文说明如何根据工作区变量创建表,使用表数据,并将表写入文件以供日后使用.table 是一个数据类型,可将异构数据和元数据属性(例如变量名称.行名称.说明和变量单位)收集到一个容器中. 表适用于列向数 ...

  4. MATLAB 基础知识 数据类型 表 添加和删除表行

    本文演示了如何在表中添加和删除行.您也可以使用变量编辑器来编辑表. 加载样本数据 加载样本患者数据并创建一个表 T. load patients T = table(LastName,Gender,A ...

  5. MATLAB 基础知识 数据类型 数据类型转换 将文本转换为数值

    本文说明如何将文本转换为它所表示的数值.通常,当有表示要绘制或在计算中使用的数字的文本时,需要执行这种转换.例如,文本可能来自文本文件或电子表格.如果在将其导入 MATLAB 时,您尚未将其转换为数值 ...

  6. MATLAB 基础知识 数据类型 表 修改单位、说明和表变量名称

    本文演示了如何访问和修改变量单位.说明和名称这几种表属性.您也可以使用变量编辑器来编辑这些属性值. 加载样本数据 加载样本患者数据并创建一个表. load patients BloodPressure ...

  7. MATLAB 基础知识 数据类型 元胞数组 创建元胞数组

    本文说明如何使用 {} 运算符或 cell 函数创建元胞数组. 当要将数据放入一个元胞数组中时,请使用元胞数组构造运算符 {} 创建该数组. myCell = {1, 2, 3;'text', ran ...

  8. MATLAB 基础知识 数据类型 函数句柄 比较函数句柄

    比较根据命名函数构造的句柄 MATLAB 会将根据同一命名函数构造的函数句柄视为相同的函数句柄.isequal 函数在比较以下类型的句柄时会返回 true 值. fun1 = @sin; fun2 = ...

  9. MATLAB 基础知识 数据类型 函数句柄 将一个函数传递到另一个函数

    您可以使用函数句柄作为其他函数(称为复合函数)的输入参数.这些函数基于某个范围内的值计算数学表达式.典型的复合函数包括 integral.quad2d.fzero 和 fminbnd. 例如,要计算自 ...

最新文章

  1. 打patch p0 p1区别
  2. webpack vue app.js自动注入页面.为app.js增加随机参数
  3. 【Node】常用基础 API 整理
  4. 2015年必火的五个Html5移动开发工具推荐
  5. java 二分法查找数组,Java二分法查找数组元素下标
  6. Java构造函数执行顺序
  7. “fatal error C1010”错误解决的三种方法
  8. [android] 代码注册广播接收者利用广播调用服务的方法
  9. Cisco路由器DHCP服务器基本配置
  10. PMP试题 | 每日一练,快速提分 9.9
  11. ai跟随路径_AI 路径寻找器(形状组合工具)-怎么使用,使用教程
  12. 利用MS模拟天然气(甲烷)在多孔介质中的吸附
  13. 电影《无双》中的管理知识
  14. 湖南科技大学计算机考研资料汇总
  15. Mysql优化-02
  16. Android照片处理——涂鸦和拼图实现
  17. C# 五步完成Bmp文件流到AVI的转换
  18. Jquery写的幸运大转盘抽奖实例,用asp.net处理的服务器逻辑,附源码下载
  19. (八)Python数据分析与挖掘实战(实战篇)——中医证型关联规则挖掘
  20. 声源近场与远场定位及方法

热门文章

  1. admi后台 vue_推荐五款Vue管理后台框架
  2. 数据库主键设置 (一看就懂)
  3. 网页设计作业 仿苏宁易购商城网站设计——仿苏宁易购官网商城(1页) HTML+CSS+JavaScript web网页大作业
  4. 通达OA-今日学习:电子签章是怎么回事?
  5. 信号处理的神经网络方法,神经网络数据分析步骤
  6. 2020年的全球土地利用数据可以免费下载了
  7. Java实现微信公众号扫码登录
  8. 硬盘累计通电时间存储在_在灾难期间保持通电
  9. MySql分组后随机获取每组一条数据
  10. Java 应用性能调优实践