MATLAB - 时间表



时间表是 MATLAB 中提供的一种数据结构。它本质上是带有行和列的表格,其中每一行都带有时间戳。数据存储在面向列的数据变量中,这些变量将具有不同的数据类型和大小,但行数相同。时间表提供各种与时间相关的函数。它们处理对齐、组合,并允许对给定时间表中带时间戳的数据进行数学运算。

由于存储的数据带有时间戳,因此有助于分析数据,并且可以在不同的领域和应用中发挥作用。在现实世界中,有很多使用场景可以应用时间表。以下是一些您可以使用时间表的主要领域:

  • 医学研究 - 在这里,您可以使用时间表来存储和分析与药物和疾病实验相关的数据。实验可以与心肺、干细胞、感染和免疫等相关。稍后可以使用 plot 和 histogram 等函数绘制数据。
  • 股票市场分析 - 来自股票市场的数据量巨大。您可以使用时间表来存储和分析它。MATLAB 中还有其他有用的方法可以用于计算数字。
  • 环境监测和评估 - 来自环境研究的数据可以存储在时间表中以进行进一步分析。
  • 传感器数据 - 使用时间表,您可以分析和存储与 GPS、温度等相关的传感器数据。

让我们深入了解 MATLAB 中时间表的工作原理。

创建时间表

MATLAB 提供多种创建时间表的方法,以下是其中一些:

  • 使用 timetable() 函数
  • 使用 array2timetable() 函数
  • 使用 table2timetable() 函数
  • 使用 timeseries2timetable() 函数

使用 timetable() 函数

以下是 timetable() 函数的语法:

语法

T = timetable(rowTimes,var1,...,varN)

timetable() 函数将创建一个表格,其中 var1…varN 是输入数据变量。参数 rowTimes 是一个时间向量。在上述函数中,数据变量 var1..varN 的数据类型可以不同,但应具有相同数量的行。rowTimes 同理,它是一个包含 datetime 或 duration 的向量。

要创建 rowTimes,我们将使用 dateTime() 函数,如下所示:

timer = datetime({'2023-01-01 09:00:00';'2023-01-01 09:30:00';'2023-01-01 10:00:00'});

在 MATLAB 中执行上述代码后,输出如下:

>> timer = datetime({'2023-01-01 09:00:00';'2023-01-01 09:30:00';'2023-01-01 10:00:00'})

timer = 

  3×1 datetime array

   01-Jan-2023 09:00:00
   01-Jan-2023 09:30:00
   01-Jan-2023 10:00:00

>>

让我们将计时器和数据变量馈送到 timetable 函数,并在 MATLAB 中查看输出。

T = timetable(timer ,DayTemp ,DayPressure)

在 MATLAB 中执行后,我们得到以下输出

>> timer = datetime({'2023-01-01 09:00:00';'2023-01-01 09:30:00';'2023-01-01 10:00:00'});
DayTemp = [28.3;30.0;33.3];
DayPressure = [23.1;23.03;33.9];
T = timetable(timer ,DayTemp ,DayPressure)

T =

  3×2 timetable

           timer            DayTemp    DayPressure
    ____________________    _______    ___________

    01-Jan-2023 09:00:00     28.3          23.1   
    01-Jan-2023 09:30:00       30         23.03   
    01-Jan-2023 10:00:00     33.3          33.9   

>>

使用 array2timetable() 函数

以下是 array2timetable() 函数的语法:

语法

array2timetable() 函数将返回一个时间表,其中 X 是一个 MXN 数组,rowTimes 是一个大小为 Mx1 的向量数组。

让我们看一个使用 array2timetable() 函数创建时间表的示例。

示例

首先,让我们创建一个 3x3 矩阵作为 X。

X = rand(3,3)

现在让我们创建一个行向量 rowTimes。

rowTimes = seconds(1:3)

现在让我们在 array2timetable() 函数中使用 X 和 rowTimes 并查看输出

X = rand(3,3)
rowTimes  = seconds(1:3)
TT = array2timetable(X,'RowTimes',rowTimes)

在 MATLAB 中执行后的输出如下:

>> X = rand(3,3)
rowTimes  = seconds(1:3)
TT = array2timetable(X,'RowTimes',rowTimes)

X =

    0.6787    0.3922    0.7060
    0.7577    0.6555    0.0318
    0.7431    0.1712    0.2769


rowTimes = 

  1×3 duration array

   1 sec   2 sec   3 sec


TT =

  3×3 timetable

    Time       X1         X2          X3   
    _____    _______    _______    ________

    1 sec    0.67874    0.39223     0.70605
    2 sec    0.75774    0.65548    0.031833
    3 sec    0.74313    0.17119     0.27692

>>

使用 table2timetable() 函数

在本例中,我们将使用一个表格,使用 table2timetable() 函数从中创建一个时间表。

表格是 MATLAB 中的一种数据类型,它以表格格式存储数据,就像您在电子表格中看到数据一样。

表格示例如下:

Name = {'Siya';'Riya';'Helen';'Reena'};
Age = [25;30;35;40];
Height = [149;150;160;153];
Weight = [50;65;48;52];
Timer = datetime({'2023-01-01 09:00:00';'2023-01-01 09:30:00';'2023-01-01 10:00:00';'2023-01-01 11:00:00'})
T = table(Name,Age,Height,Weight,Timer)

在 MATLAB 中执行后,创建的表格如下所示:

T = table(Name,Age,Height,Weight, Timer)

T =

  4×5 table

      Name       Age    Height    Weight           Timer       
    _________    ___    ______    ______    ___________________

    {'Siya' }    25      149        50      2023-01-01 09:00:00
    {'Riya' }    30      150        65      2023-01-01 09:30:00
    {'Helen'}    35      160        48      2023-01-01 10:00:00
    {'Reena'}    40      153        52      2023-01-01 11:00:00

现在让我们使用相同的表格从中创建一个时间表。

所用函数的语法为:

TT = table2timetable(T)

T 是输入到 table2timetable() 函数的表格。让我们在 MATLAB 中执行相同的操作

>> TT = table2timetable(T)

TT =

  4×4 timetable

           Timer              Name       Age    Height    Weight
    ____________________    _________    ___    ______    ______

    01-Jan-2023 09:00:00    {'Siya' }    25      149        50  
    01-Jan-2023 09:30:00    {'Riya' }    30      150        65  
    01-Jan-2023 10:00:00    {'Helen'}    35      160        48  
    01-Jan-2023 11:00:00    {'Reena'}    40      153        52  

>> 

使用 timeseries2timetable() 函数

timeseries2timetable() 函数将时间序列对象转换为时间表。

语法如下:

TT = timeseries2timetable(ts)

这里 ts 是时间序列对象。

下面的示例显示了 timeseries() 函数,它返回时间序列对象,我们稍后可以在 timeseries2timetable() 函数中使用它。

ts = timeseries(rand(5,1),[0 05 10 15 20])

时间序列对象由 5 个以 5 秒间隔采样的随机数组成。

在 MATLAB 中执行后的输出为:

>> ts = timeseries(rand(5,1),[0 05 10 15 20])
  timeseries

  Common Properties:
            Name: 'unnamed'
            Time: [5x1 double]
        TimeInfo: [1x1 tsdata.timemetadata]
            Data: [5x1 double]
        DataInfo: [1x1 tsdata.datametadata]

  More properties, Methods

>> ts.Time

ans =

     0
     5
    10
    15
    20

>> 

属性 ts.Time 返回时间。

现在让我们在 timeseries2timetable() 函数中使用时间序列对象

TT = timeseries2timetable(ts)

在 MATLAB 中执行后的输出如下:

>> TT = timeseries2timetable(ts)

TT =

  5×1 timetable

     Time      Data  
    ______    _______

    0 sec     0.81472
    5 sec     0.90579
    10 sec    0.12699
    15 sec    0.91338
    20 sec    0.63236

>> 
广告