table2timetable
将表转换为时间表
语法
说明
将输入表转换为时间表。TT = table2timetable(T)T 中的第一个日期时间或持续时间变量成为 TT 的行时间向量。T 的其余变量成为 TT 的变量。
如果
T是不含行名称的M×N表,则TT是M×(N-1)时间表。如果
T是含有行名称的M×N表,则table2timetable将T的行名称赋给TT的变量。因此,TT是M×N时间表。
有关创建和使用时间表的详细信息,请参阅时间表。
要通过文本或电子表格文件中的数据创建时间表,请使用 readtimetable 函数。
将表变量 TT = table2timetable(T,RowTimes=timeVarName)timeVarName 指定为输出时间表的行时间向量。timeVarName 可以是 T 中包含日期时间或持续时间值的任何变量的名称或索引。T 的其余变量成为 TT 的变量。
示例
将包含日期和时间的表转换为时间表。
将电力中断数据从文件 outages.csv 读取到表中。该表包含中断时间和恢复时间。
T = readtable("outages.csv",TextType="string")
T=1468×6 table
Region OutageTime Loss Customers RestorationTime Cause
___________ ________________ ______ __________ ________________ _________________
"SouthWest" 2002-02-01 12:18 458.98 1.8202e+06 2002-02-07 16:50 "winter storm"
"SouthEast" 2003-01-23 00:49 530.14 2.1204e+05 NaT "winter storm"
"SouthEast" 2003-02-07 21:15 289.4 1.4294e+05 2003-02-17 08:14 "winter storm"
"West" 2004-04-06 05:44 434.81 3.4037e+05 2004-04-06 06:10 "equipment fault"
"MidWest" 2002-03-16 06:18 186.44 2.1275e+05 2002-03-18 23:23 "severe storm"
"West" 2003-06-18 02:49 0 0 2003-06-18 10:54 "attack"
"West" 2004-06-20 14:39 231.29 NaN 2004-06-20 19:16 "equipment fault"
"West" 2002-06-06 19:28 311.86 NaN 2002-06-07 00:51 "equipment fault"
"NorthEast" 2003-07-16 16:23 239.93 49434 2003-07-17 01:12 "fire"
"MidWest" 2004-09-27 11:09 286.72 66104 2004-09-27 16:37 "equipment fault"
"SouthEast" 2004-09-05 17:48 73.387 36073 2004-09-05 20:46 "equipment fault"
"West" 2004-05-21 21:45 159.99 NaN 2004-05-22 04:23 "equipment fault"
"SouthEast" 2002-09-01 18:22 95.917 36759 2002-09-01 19:12 "severe storm"
"SouthEast" 2003-09-27 07:32 NaN 3.5517e+05 2003-10-04 07:02 "severe storm"
"West" 2003-11-12 06:12 254.09 9.2429e+05 2003-11-17 02:04 "winter storm"
"NorthEast" 2004-09-18 05:54 0 0 NaT "equipment fault"
⋮
将该表转换为时间表。第一个含有时间的变量 OutageTime 成为 TT 的时间向量。
TT = table2timetable(T)
TT=1468×5 timetable
OutageTime 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 fault"
2002-03-16 06:18 "MidWest" 186.44 2.1275e+05 2002-03-18 23:23 "severe storm"
2003-06-18 02:49 "West" 0 0 2003-06-18 10:54 "attack"
2004-06-20 14:39 "West" 231.29 NaN 2004-06-20 19:16 "equipment fault"
2002-06-06 19:28 "West" 311.86 NaN 2002-06-07 00:51 "equipment fault"
2003-07-16 16:23 "NorthEast" 239.93 49434 2003-07-17 01:12 "fire"
2004-09-27 11:09 "MidWest" 286.72 66104 2004-09-27 16:37 "equipment fault"
2004-09-05 17:48 "SouthEast" 73.387 36073 2004-09-05 20:46 "equipment fault"
2004-05-21 21:45 "West" 159.99 NaN 2004-05-22 04:23 "equipment fault"
2002-09-01 18:22 "SouthEast" 95.917 36759 2002-09-01 19:12 "severe storm"
2003-09-27 07:32 "SouthEast" NaN 3.5517e+05 2003-10-04 07:02 "severe storm"
2003-11-12 06:12 "West" 254.09 9.2429e+05 2003-11-17 02:04 "winter storm"
2004-09-18 05:54 "NorthEast" 0 0 NaT "equipment fault"
⋮
使用 TT 的时间向量的行时间对其进行索引。您可以将行时间视为用于指定行的标签。
TT("2003-02-07 21:15",:)ans=1×5 timetable
OutageTime Region Loss Customers RestorationTime Cause
________________ ___________ _____ __________ ________________ ______________
2003-02-07 21:15 "SouthEast" 289.4 1.4294e+05 2003-02-17 08:14 "winter storm"
计算电力中断的持续时间。使用圆点表示法将行时间提取为向量。
TT.OutageDuration = TT.RestorationTime - TT.OutageTime
TT=1468×6 timetable
OutageTime Region Loss Customers RestorationTime Cause OutageDuration
________________ ___________ ______ __________ ________________ _________________ ______________
2002-02-01 12:18 "SouthWest" 458.98 1.8202e+06 2002-02-07 16:50 "winter storm" 148:32:00
2003-01-23 00:49 "SouthEast" 530.14 2.1204e+05 NaT "winter storm" NaN
2003-02-07 21:15 "SouthEast" 289.4 1.4294e+05 2003-02-17 08:14 "winter storm" 226:59:00
2004-04-06 05:44 "West" 434.81 3.4037e+05 2004-04-06 06:10 "equipment fault" 00:26:00
2002-03-16 06:18 "MidWest" 186.44 2.1275e+05 2002-03-18 23:23 "severe storm" 65:05:00
2003-06-18 02:49 "West" 0 0 2003-06-18 10:54 "attack" 08:05:00
2004-06-20 14:39 "West" 231.29 NaN 2004-06-20 19:16 "equipment fault" 04:37:00
2002-06-06 19:28 "West" 311.86 NaN 2002-06-07 00:51 "equipment fault" 05:23:00
2003-07-16 16:23 "NorthEast" 239.93 49434 2003-07-17 01:12 "fire" 08:49:00
2004-09-27 11:09 "MidWest" 286.72 66104 2004-09-27 16:37 "equipment fault" 05:28:00
2004-09-05 17:48 "SouthEast" 73.387 36073 2004-09-05 20:46 "equipment fault" 02:58:00
2004-05-21 21:45 "West" 159.99 NaN 2004-05-22 04:23 "equipment fault" 06:38:00
2002-09-01 18:22 "SouthEast" 95.917 36759 2002-09-01 19:12 "severe storm" 00:50:00
2003-09-27 07:32 "SouthEast" NaN 3.5517e+05 2003-10-04 07:02 "severe storm" 167:30:00
2003-11-12 06:12 "West" 254.09 9.2429e+05 2003-11-17 02:04 "winter storm" 115:52:00
2004-09-18 05:54 "NorthEast" 0 0 NaT "equipment fault" NaN
⋮
将表转换为时间表,并指定将成为时间表的时间向量的表变量。
将电力中断数据从文件 outages.csv 读取到表中。该表包含中断时间和恢复时间。
T = readtable("outages.csv",TextType="string")
T=1468×6 table
Region OutageTime Loss Customers RestorationTime Cause
___________ ________________ ______ __________ ________________ _________________
"SouthWest" 2002-02-01 12:18 458.98 1.8202e+06 2002-02-07 16:50 "winter storm"
"SouthEast" 2003-01-23 00:49 530.14 2.1204e+05 NaT "winter storm"
"SouthEast" 2003-02-07 21:15 289.4 1.4294e+05 2003-02-17 08:14 "winter storm"
"West" 2004-04-06 05:44 434.81 3.4037e+05 2004-04-06 06:10 "equipment fault"
"MidWest" 2002-03-16 06:18 186.44 2.1275e+05 2002-03-18 23:23 "severe storm"
"West" 2003-06-18 02:49 0 0 2003-06-18 10:54 "attack"
"West" 2004-06-20 14:39 231.29 NaN 2004-06-20 19:16 "equipment fault"
"West" 2002-06-06 19:28 311.86 NaN 2002-06-07 00:51 "equipment fault"
"NorthEast" 2003-07-16 16:23 239.93 49434 2003-07-17 01:12 "fire"
"MidWest" 2004-09-27 11:09 286.72 66104 2004-09-27 16:37 "equipment fault"
"SouthEast" 2004-09-05 17:48 73.387 36073 2004-09-05 20:46 "equipment fault"
"West" 2004-05-21 21:45 159.99 NaN 2004-05-22 04:23 "equipment fault"
"SouthEast" 2002-09-01 18:22 95.917 36759 2002-09-01 19:12 "severe storm"
"SouthEast" 2003-09-27 07:32 NaN 3.5517e+05 2003-10-04 07:02 "severe storm"
"West" 2003-11-12 06:12 254.09 9.2429e+05 2003-11-17 02:04 "winter storm"
"NorthEast" 2004-09-18 05:54 0 0 NaT "equipment fault"
⋮
将该表转换为时间表。将第二个含有日期和时间的变量 RestorationTime 指定为时间表的时间向量。
TT = table2timetable(T,RowTimes="RestorationTime")TT=1468×5 timetable
RestorationTime Region OutageTime Loss Customers Cause
________________ ___________ ________________ ______ __________ _________________
2002-02-07 16:50 "SouthWest" 2002-02-01 12:18 458.98 1.8202e+06 "winter storm"
NaT "SouthEast" 2003-01-23 00:49 530.14 2.1204e+05 "winter storm"
2003-02-17 08:14 "SouthEast" 2003-02-07 21:15 289.4 1.4294e+05 "winter storm"
2004-04-06 06:10 "West" 2004-04-06 05:44 434.81 3.4037e+05 "equipment fault"
2002-03-18 23:23 "MidWest" 2002-03-16 06:18 186.44 2.1275e+05 "severe storm"
2003-06-18 10:54 "West" 2003-06-18 02:49 0 0 "attack"
2004-06-20 19:16 "West" 2004-06-20 14:39 231.29 NaN "equipment fault"
2002-06-07 00:51 "West" 2002-06-06 19:28 311.86 NaN "equipment fault"
2003-07-17 01:12 "NorthEast" 2003-07-16 16:23 239.93 49434 "fire"
2004-09-27 16:37 "MidWest" 2004-09-27 11:09 286.72 66104 "equipment fault"
2004-09-05 20:46 "SouthEast" 2004-09-05 17:48 73.387 36073 "equipment fault"
2004-05-22 04:23 "West" 2004-05-21 21:45 159.99 NaN "equipment fault"
2002-09-01 19:12 "SouthEast" 2002-09-01 18:22 95.917 36759 "severe storm"
2003-10-04 07:02 "SouthEast" 2003-09-27 07:32 NaN 3.5517e+05 "severe storm"
2003-11-17 02:04 "West" 2003-11-12 06:12 254.09 9.2429e+05 "winter storm"
NaT "NorthEast" 2004-09-18 05:54 0 0 "equipment fault"
⋮
通过添加单独的包含行时间的时间向量,将表转换为时间表。
先从数值数组创建一个表。
Reading1 = [98;97.5;97.9;98.1;97.9]; Reading2 = [120;111;119;117;116]; T = table(Reading1,Reading2)
T=5×2 table
Reading1 Reading2
________ ________
98 120
97.5 111
97.9 119
98.1 117
97.9 116
然后使用 seconds 函数指定时间向量。Time 具有 duration 数据类型。它格式化为以秒为单位显示时间。
Time = seconds(1:5)
Time = 1×5 duration
1 sec 2 sec 3 sec 4 sec 5 sec
使用 Time 作为行时间,将该表转换为时间表。所有表变量都将成为时间表的变量。
TT = table2timetable(T,RowTimes=Time)
TT=5×2 timetable
Time Reading1 Reading2
_____ ________ ________
1 sec 98 120
2 sec 97.5 111
3 sec 97.9 119
4 sec 98.1 117
5 sec 97.9 116
创建一个表。
Reading1 = [98;97.5;97.9;98.1;97.9]; Reading2 = [120;111;119;117;116]; T = table(Reading1,Reading2)
T=5×2 table
Reading1 Reading2
________ ________
98 120
97.5 111
97.9 119
98.1 117
97.9 116
将采样率指定为 500 Hz。使用该采样率和零秒的起始行时间将 T 转换为时间表。
TT = table2timetable(T,SampleRate=500)
TT=5×2 timetable
Time Reading1 Reading2
_________ ________ ________
0 sec 98 120
0.002 sec 97.5 111
0.004 sec 97.9 119
0.006 sec 98.1 117
0.008 sec 97.9 116
创建一个表。
Reading1 = [98;97.5;97.9;98.1;97.9]; Reading2 = [120;111;119;117;116]; T = table(Reading1,Reading2)
T=5×2 table
Reading1 Reading2
________ ________
98 120
97.5 111
97.9 119
98.1 117
97.9 116
使用 seconds 函数将时间步指定为 10 秒。使用该采样率和零秒的起始行时间将 T 转换为时间表。
TT = table2timetable(T,TimeStep=seconds(10))
TT=5×2 timetable
Time Reading1 Reading2
________ ________ ________
00:00:00 98 120
00:00:10 97.5 111
00:00:20 97.9 119
00:00:30 98.1 117
00:00:40 97.9 116
要更改行时间向量的格式,请将其 Format 属性设置为新格式。
TT.Time.Format = "s"TT=5×2 timetable
Time Reading1 Reading2
______ ________ ________
0 sec 98 120
10 sec 97.5 111
20 sec 97.9 119
30 sec 98.1 117
40 sec 97.9 116
创建一个表。
Reading1 = [98;97.5;97.9;98.1;97.9]; Reading2 = [120;111;119;117;116]; T = table(Reading1,Reading2)
T=5×2 table
Reading1 Reading2
________ ________
98 120
97.5 111
97.9 119
98.1 117
97.9 116
通过将时间步指定为 10 秒、将开始时间设置为 5 秒,将其转换为时间表。
dt = seconds(10); t0 = seconds(5); TT = table2timetable(T,TimeStep=dt,StartTime=t0)
TT=5×2 timetable
Time Reading1 Reading2
______ ________ ________
5 sec 98 120
15 sec 97.5 111
25 sec 97.9 119
35 sec 98.1 117
45 sec 97.9 116
输入参数
输入表。
来自输入表的变量,指定为字符串标量、字符向量或数值索引。
赋给输出时间表的行时间,指定为日期时间向量或持续时间向量。rowTimes 的元素数必须等于输入表的行数。rowTimes 中的时间值不需要唯一、排序或有规律。
采样率,指定为数值标量。Fs 指定每秒采样数 (Hz)。
时间步,指定为持续时间或日历持续时间标量。
数据类型: duration | calendarDuration
开始时间,指定为日期时间标量或持续时间标量。
如果
t0是日期时间值,则TT的行时间是日期时间值。如果
t0是持续时间,则行时间是持续时间。
如果时间步 dt 是日历持续时间值,则 t0 必须是日期时间值。
数据类型: datetime | duration
提示
在某些情况下,您可以使用指定行时间之间的规则时间步的语法来调用
table2timetable,而table2timetable返回不规则时间表。当您使用日历时间单位指定时间步并且存在引入不规则时间步的行时间时,就会出现这种结果。例如,如果您创建时间步为一个日历月的时间表,从 2026 年 1 月 31 日开始,则基于月份,时间步是不规则的。stime = datetime(2026,1,31); tstep = calmonths(1); T = table([1:3]'); TT = table2timetable(T,TimeStep=tstep,StartTime=stime)
TT = 3×1 timetable Time Var1 ___________ ____ 31-Jan-2026 1 28-Feb-2026 2 31-Mar-2026 3夏令时 (DST) 的转换或闰秒的
datetime值也会造成不规则性。下表指定可能意外产生不规则结果的日期、时间和时间步。行时间值
时间步
开始时间,指定为一个月的第 29 天、第 30 天或第 31 天。
日历月数或季度数。
开始时间,指定为 2 月 29 日。
日历年数。
在从 DST 转换到标准时间的一天中凌晨 1:00 到 2:00 之间发生的任何 datetime值(当这些值的时区遵守 DST 时)。日历天数或月数。 闰秒的任何
datetime值(当这些值的时区是UTCLeapSeconds时区时)。有关闰秒的列表,请参阅leapseconds。以任何日历单位(天、周、月、季度或年)指定的时间步。
扩展功能
table2timetable 函数支持 tall 数组,但存在以下使用说明和限制:
不支持
SampleRate、TimeStep和StartTime名称-值参量。
有关详细信息,请参阅tall 数组。
用法说明和限制:
如果使用
SampleRate、TimeStep或StartTime名称-值参量指定规则行时间,则该值在编译时必须为常量,行时间才会是规则的。否则,在生成代码中,会认为行时间是不规则的。如果输入表的
UserData属性具有非空值,则输出不包括该值。输出时间表的UserData属性始终为空。
有关详细信息,请参阅 时间表的代码生成 (MATLAB Coder) 和 代码生成的时间表限制 (MATLAB Coder)。
请参阅“C/C++ 代码生成”部分中的用法说明和限制。同样的用法说明和限制也适用于 GPU 代码生成。
基于线程的环境
使用 MATLAB® backgroundPool 在后台运行代码或使用 Parallel Computing Toolbox™ ThreadPool 加快代码运行速度。
table2timetable 函数支持分布式数组输入,但有以下用法说明和限制:
不支持 SampleRate、TimeStep 和 StartTime 名称-值参量。
有关详细信息,请参阅使用分布式数组运行 MATLAB 函数 (Parallel Computing Toolbox)。
版本历史记录
在 R2016b 中推出不支持 SamplingRate 名称-值参量。请改用 SampleRate。对应的时间表属性也命名为 SampleRate。
在以后的版本中,将不支持使用 SamplingRate 名称-值参量。请改用 SampleRate。对应的时间表属性也命名为 SampleRate。
为了实现向后兼容性,您仍可以将 SamplingRate 指定为名称-值参量形式的名称。但是,该值将赋给 SampleRate 属性。
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 MathWorks 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
- América Latina (Español)
- Canada (English)
- United States (English)
欧洲
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)