Main Content

本页翻译不是最新的。点击此处可查看最新英文版本。

创建时间表

以下示例演示如何创建时间表、合并时间表以及将多个时间表中的数据调整到一个公共时间向量中。公共时间向量可以包含其中一个时间表或两个时间表中的时间,也可以是一个您指定的全新时间向量。以下示例演示如何计算和显示不同时间表中包含的天气测量值的日均值。

时间表是一种表类型,用于将时间与每一行进行关联。时间表可以存储具有不同数据类型和大小的列向数据变量,只要每个变量的行数相同。此外,时间表还提供了特定于时间的函数,以合并数据、为数据建立下标以及调整数据。

从文件导入时间表

将空气质量数据和天气测量值加载到两个不同的时间表中。测量值的日期范围从 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   

同步时间表

时间表 indoorsoutdoors 包含不同时间在建筑物内部和外部获取的不同测量值。使用 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');

Figure contains an axes object. The axes object with title Mean Daily Weather Trends, xlabel Time, ylabel Normalized Weather Measurements contains 5 objects of type line. These objects represent Humidity_indoors, AirQuality, Humidity_outdoors, TemperatureF, PressureHg.

另请参阅

| | | | |

相关主题