时间表的代码生成
timetable
数据类型适用于具有时间戳行的表格数据。与表类似,时间表由若干行向变量和若干列向变量组成。时间表中的每个变量可以具有不同的数据类型和大小,但有一个限制条件是每个变量的行数必须相同。
时间表的行时间是标记行的时间值。您可以按行时间和变量对时间表进行索引。要对时间表进行索引,可以使用圆括号 ()
返回子表,或者使用花括号 {}
提取内容。您可以通过名称来引用变量和引用行时间向量。有关详细信息,请参阅时间表。
在代码生成中使用时间表时,请遵守以下限制。
为代码生成定义时间表
对于代码生成,请使用 timetable
函数。例如,假设您的 MATLAB® 函数的输入参量是三个具有相同行数的数组(A
、B
和 C
)、一个包含行时间 (D
) 的 datetime
或 duration
向量和一个具有变量名称 (vnames
) 的元胞数组。您可以创建一个包含这些数组作为时间表变量的时间表。
function TT = foo(A,B,C,D,vnames) %#codegen TT = table(A,B,C,'RowTimes',D,'VariableNames',vnames); end
要将数组和表转换为时间表,请使用 array2timetable
和 table2timetable
函数。例如,您可以将输入 M
×N
矩阵转换为时间表,其中矩阵的每列都变为时间表中的一个变量。使用 duration
向量对行时间赋值。
function TT = foo(A,D,vnames) %#codegen TT = array2timetable(A,'RowTimes',D,'VariableNames',vnames); end
对于代码生成,您必须在创建时间表时提供时间表变量名称。时间表变量名称不必是有效的 MATLAB 标识符。名称必须由 ASCII 字符组成,但可以包括任何 ASCII 字符(如逗号、破折号和空白字符)。
行时间可以是 datetime
或 duration
数据类型。
允许对时间表执行的操作
对于代码生成,您只能对时间表执行下表中列出的操作。
运算 | 示例 | 注释 |
---|---|---|
赋值运算符: |
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); | 代码生成支持按位置、变量或行时间进行索引,以及逻辑索引。此外,您还可以通过使用 代码生成支持:
|
串联 |
TT1 = timetable(A,B,C,'RowTimes',D1,'VariableNames',vnames); TT2 = timetable(D,E,F,'RowTimes',D2,'VariableNames',vnames); TT = [TT1 ; TT2]; | 代码生成支持时间表串联。
|
支持时间表的 MATLAB 工具箱函数
对于代码生成,您可以将时间表与以下 MATLAB 工具箱函数结合使用: