主要内容

时间表的代码生成

timetable 数据类型适用于具有时间戳行的表格数据。与表类似,时间表由若干行向变量和若干列向变量组成。时间表中的每个变量可以具有不同的数据类型和大小,但有一个限制条件是每个变量的行数必须相同。

时间表的行时间是标记行的时间值。您可以按行时间和变量对时间表进行索引。要对时间表进行索引,可以使用圆括号 () 返回子表,或者使用花括号 {} 提取内容。您可以通过名称来引用变量和引用行时间向量。有关详细信息,请参阅时间表

在代码生成中使用时间表时,请遵守以下限制。

为代码生成定义时间表

要在用于代码生成的 MATLAB® 代码中定义时间表,请使用 timetable 函数。您也可以使用 array2timetabletable2timetable 函数将数组和表转换为时间表。对于代码生成,在创建时间表时必须提供 "RowTimes""VariableNames" 名称-值参量。时间表变量名称不必是有效的 MATLAB 标识符。变量名称可以包含任何 ASCII 字符(如逗号、破折号和空白字符)。行时间必须为 datetimeduration 值。

例如,假设 ABC 是 10×1 双精度数组,vnames 是列名称元胞数组,rtimesdatetime 值的向量。您可以为使用这些数组作为时间表变量创建时间表的函数生成代码。

function TT = foo(A,B,C,D,vnames) %#codegen
    TT = timetable(A,B,C,'RowTimes',rtimes,'VariableNames',vnames);
end

允许对时间表执行的操作

对于代码生成,您只能对时间表执行下表中列出的操作。

运算示例注释

赋值运算符:=

TT = timetable(A,B,C,'RowTimes',D,'VariableNames',vnames);
TT{:,1} = X;

代码生成不支持使用赋值运算符 = 进行以下操作:

  • 删除变量或行。

  • 添加变量或行。

索引操作

D = seconds(1:10);
TT = timetable(A,B,C,'RowTimes',D,'VariableNames',vnames);
TT(seconds(3:7),1:3);

代码生成支持按位置、变量或行时间进行索引,以及逻辑索引。此外,您还可以通过使用 timerangewithtol 函数创建的对象进行索引。

代码生成支持:

  • 带圆括号 () 的时间表索引。

  • 带花括号 {} 的内容索引。

  • 访问时间表变量的圆点表示法。

串联

TT1 = timetable(A,B,C,'RowTimes',D1,'VariableNames',vnames);
TT2 = timetable(D,E,F,'RowTimes',D2,'VariableNames',vnames);
TT = [TT1 ; TT2];

代码生成支持时间表串联。

  • 对于垂直串联,时间表中的变量必须具有相同的名称,其顺序也需相同。

  • 对于水平串联,时间表必须具有相同的行数。它们还必须具有相同的行时间,其顺序也需相同。

支持时间表的 MATLAB 工具箱函数

对于代码生成,您可以将时间表与以下 MATLAB 工具箱函数结合使用:

另请参阅

主题