创建时间表
以下示例演示如何创建时间表、合并时间表以及将多个时间表中的数据调整到一个公共时间向量中。公共时间向量可以包含其中一个时间表或两个时间表中的时间,也可以是一个您指定的全新时间向量。以下示例演示如何计算和显示不同时间表中包含的天气测量值的日均值。
时间表是一种表类型,用于将时间与每一行进行关联。时间表可以存储具有不同数据类型和大小的列向数据变量,只要每个变量的行数相同。此外,时间表还提供了特定于时间的函数,以合并数据、为数据建立下标以及调整数据。
从文件导入时间表
将空气质量数据和天气测量值加载到两个不同的时间表中。测量值的日期范围从 2015 年 11 月 15 日到 2015 年 11 月 19 日。空气质量数据来自建筑物内部的传感器,而天气测量值来自外部传感器。
使用 readtimetable
函数读取表中的空气质量数据。输出是一个时间表。
indoors = readtimetable('indoors.csv');
您也可以使用 array2timetable
函数根据 M×N 数组来创建时间表,或者使用 timetable
函数根据工作区变量来创建时间表。
显示 indoors
的前五行。此时间表的每一行都带有一个标记该行数据的时间。
indoors(1:5,:)
ans=5×2 timetable
Time Humidity AirQuality
___________________ ________ __________
2015-11-15 00:00:24 36 80
2015-11-15 01:13:35 36 80
2015-11-15 02:26:47 37 79
2015-11-15 03:39:59 37 82
2015-11-15 04:53:11 36 80
加载包含天气测量值的时间表。显示 outdoors
的前五行。
load outdoors
outdoors(1:5,:)
ans=5×3 timetable
Time Humidity TemperatureF PressureHg
___________________ ________ ____________ __________
2015-11-15 00:00:24 49 51.3 29.61
2015-11-15 01:30:24 48.9 51.5 29.61
2015-11-15 03:00:24 48.9 51.5 29.61
2015-11-15 04:30:24 48.8 51.5 29.61
2015-11-15 06:00:24 48.7 51.5 29.6
同步时间表
时间表 indoors
和 outdoors
包含不同时间在建筑物内部和外部获取的不同测量值。使用 synchronize
函数将所有数据都合并到一个时间表中。
tt = synchronize(indoors,outdoors); tt(1:5,:)
ans=5×5 timetable
Time Humidity_indoors AirQuality Humidity_outdoors TemperatureF PressureHg
___________________ ________________ __________ _________________ ____________ __________
2015-11-15 00:00:24 36 80 49 51.3 29.61
2015-11-15 01:13:35 36 80 NaN NaN NaN
2015-11-15 01:30:24 NaN NaN 48.9 51.5 29.61
2015-11-15 02:26:47 37 79 NaN NaN NaN
2015-11-15 03:00:24 NaN NaN 48.9 51.5 29.61
输出时间表 tt
包含两个时间表的所有时间。synchronize
会在 tt
中未放置数据值的位置放置一个缺失数据指示符。如果两个输入时间表包含一个同名变量(如 Humidity
),synchronize
将会重命名这两个变量并将二者都添加到输出时间表。
再次同步这些时间表,这次将会通过线性插值来填充缺失的数据值。
ttLinear = synchronize(indoors,outdoors,'union','linear'); ttLinear(1:5,:)
ans=5×5 timetable
Time Humidity_indoors AirQuality Humidity_outdoors TemperatureF PressureHg
___________________ ________________ __________ _________________ ____________ __________
2015-11-15 00:00:24 36 80 49 51.3 29.61
2015-11-15 01:13:35 36 80 48.919 51.463 29.61
2015-11-15 01:30:24 36.23 79.77 48.9 51.5 29.61
2015-11-15 02:26:47 37 79 48.9 51.5 29.61
2015-11-15 03:00:24 37 80.378 48.9 51.5 29.61
调整一个时间表中的数据
您也可以将单个时间表中的数据调整到新的时间向量中。使用 retime
函数以 6 小时为时间间隔计算 ttLinear
中的变量的均值。如果在您调整数据后有任何行包含 NaN
值,请使用 rmmissing
函数将这些值删除。
tv = [datetime(2015,11,15):hours(6):datetime(2015,11,18)];
ttHourly = retime(ttLinear,tv,'mean');
ttHourly = rmmissing(ttHourly);
绘制时间表数据图
根据时间表中每个变量的均值对 ttHourly
中的数据进行归一化。绘制这些测量值的日均值图。您可以使用时间表的 Variables
属性来访问这些变量。ttHourly.Variables
会返回与 ttHourly{:,:}
相同的变量。
ttMeanVars = ttHourly.Variables./mean(ttHourly.Variables); plot(ttHourly.Time,ttMeanVars); legend(ttHourly.Properties.VariableNames,'Interpreter','none'); xlabel('Time'); ylabel('Normalized Weather Measurements'); title('Mean Daily Weather Trends');
另请参阅
timetable
| table2timetable
| synchronize
| retime
| timerange
| rmmissing