主要内容

时间表的代码生成

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

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

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

为代码生成定义时间表

对于代码生成,请使用 timetable 函数。例如,假设您的 MATLAB® 函数的输入参量是三个具有相同行数的数组(ABC)、一个包含行时间 (D) 的 datetimeduration 向量和一个具有变量名称 (vnames) 的元胞数组。您可以创建一个包含这些数组作为时间表变量的时间表。

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

要将数组和表转换为时间表,请使用 array2timetabletable2timetable 函数。例如,您可以将输入 M×N 矩阵转换为时间表,其中矩阵的每列都变为时间表中的一个变量。使用 duration 向量对行时间赋值。

function TT = foo(A,D,vnames) %#codegen
    TT = array2timetable(A,'RowTimes',D,'VariableNames',vnames);
end

对于代码生成,您必须在创建时间表时提供时间表变量名称。时间表变量名称不必是有效的 MATLAB 标识符。名称必须由 ASCII 字符组成,但可以包括任何 ASCII 字符(如逗号、破折号和空白字符)。

行时间可以是 datetimeduration 数据类型。

允许对时间表执行的操作

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

运算示例注释

赋值运算符:=

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 工具箱函数结合使用:

另请参阅

主题