主要内容

代码生成的时间表限制

如果您创建时间表,修改它们,或使用MATLAB中的时间表函数®您打算用于代码生成的代码,则代码生成具有以下部分所述的限制。适用于课程的限制也适用于课程表。有关类限制的详细信息,请参见代码生成的MATLAB类定义

创建时间表限制

如果您的MATLAB代码创建时间表,那么代码生成有这些限制。

时间表创建的输入

限制

任何输入

  • 时间表的第一个维度的名称是“时间”方法指定它,否则“DimensionNames”名称-值参数。

    第一个维度的名称也是行次数向量的名称,您可以使用点表示法来引用它。

  • 创建一个有规律的时间表时“SampleRate”,“开始时间”,或“步伐”名称-值参数由入口点函数传入,首先使用编码器。常数函数使值为常数。如果你不使它们为常数,那么行时间被认为是不规则的。

  • 如果您创建一个常规时间表,并试图设置不规则的行时间,则会产生一个错误。

  • 如果你创建了一个不规则的时间表,那么即使你设置了它的抽样率或时间步长,它仍然是不规则的。

  • 时间表变量名不必是有效的MATLAB标识符。名称必须由ASCII字符组成,可以包含逗号、破折号和空格字符。

  • 不能使用指定名称-值参数名称=值方法创建时间表时的时间表函数。

从输入数组创建的时间表

  • 属性指定变量名“VariableNames”属性从输入数组创建时间表时的名称-值参数时间表array2timetable功能。

使用预先分配的变量创建时间表

  • 您不必指定“VariableNames”属性预分配时间表时的参数时间表功能和“大小”名称-值参数。

  • 属性只能指定以下数据类型“VariableTypes”名称-值参数:

    • “双”

    • “单一”

    • “doublenan”“doubleNaN”

    • “singlenan”“singleNaN”

    • “int8”,“int16”,“int32”,或“int64”

    • “uint8”,“uint16”,“uint32”,或“uint64”

    • “逻辑”

    • “datetime”

    • “持续时间”

    • “cellstr”

    • “字符”

修改时间表限制

如果MATLAB代码修改了时间表、行时间或属性中的数据,那么代码生成就有这些限制。

营运或财产

限制

VariableNames,DimensionNames,或用户数据属性

  • 创建时间表后,不能更改VariableNames,DimensionNames,或用户数据属性。

    创建时间表时,可以指定“VariableNames”,“DimensionNames”,“RowTimes”输入参数以设置具有这些名称的属性。

将索引作为生成代码的输入参数

  • 要将指定变量的时间表索引作为输入参数传递到生成的代码中,请首先使用编码器。常数函数使指标成为时间表常数的二次元。如果第二个维度的索引不是常量,那么对变量的索引就会产生错误。

  • 如果时刻表上有排时间持续时间值,您可以使用任意一种方法将其编入索引持续时间属性生成的对象timerangewithtol函数,则输出是非常量,行数可变。

  • 如果一个常规的时间表有排位持续时间值,您可以使用任意一种方法将其编入索引持续时间属性生成的对象timerangewithtol函数,则输出被认为是不规则的。

自定义元数据

  • 不能将自定义元数据添加到时间表中。的addprop而且rmprop不支持函数。金宝app

改变课程表大小的作业

  • 您不能通过分配更改时间表的大小。例如,这个添加新行的调用将产生一个错误。

    函数TT = foo()% # codegenTT =时间表((1:3)',(1:3)',“RowTimes”秒([0、5、10]),...“VariableNames”, {“Var1”,“Var2”});Tt {4,:} = [5,5];结束

    通过赋值删除行或变量也会产生错误。

  • 不能通过在赋值中使用新行时间来添加新行。例如,通过使用新行时间而不是数字索引来添加新行的调用不会产生错误,但也不会添加新行。

    函数TT = foo()% # codegenTT =时间表((1:3)',(1:3)',“RowTimes”秒([0、5、10]),...“VariableNames”, {“Var1”,“Var2”});TT{seconds(15),:} = [5,5];结束

垂直连接

  • 当您垂直连接时间表时,它们必须具有相同顺序的相同变量名。在MATLAB中,变量名必须相同,但在时间表中可以以不同的顺序排列。

横向连接

  • 当您水平连接时间表时,它们必须具有相同顺序的相同行时间。在MATLAB中,行时间必须是相同的,但在时间表中可以是不同的顺序。

时间表变量是N-D单元格数组

  • 如果两个时间表的变量是N-D单元格数组,则不能垂直连接时间表。

  • 不能使用花括号从N-D单元格数组的多个时间表变量中提取数据,因为此操作是水平连接。

使用时间表函数的限制

如果MATLAB代码使用表中列出的函数,那么代码生成就有这些限制。

函数

限制

addvars

  • 不能使用指定名称-值参数名称=值语法。

convertvars

  • 不支持函数句柄。金宝app

  • 第二个和第三个输入参数(var而且数据类型)必须是不变的。

  • 你不能指定数据类型作为“字符”

innerjoin

  • 一般来说,输入时间表不能有任何同名的非关键变量。属性,则可以联接输入时间表的子集“LeftVariables”而且“RightVariables”名称-值参数。指定这些参数,使两个参数中都没有变量名“LeftVariables”而且“RightVariables”

  • 这些name-value参数的值必须为常量:

    • “钥匙”

    • “LeftKeys”

    • “RightKeys”

    • “LeftVariables”

    • “RightVariables”

  • 不支持嵌套时间表。金宝app

相交

setdiff

setxor

联盟

  • 这些函数在所有情况下都支持未排序金宝app的时间表。您不必指定“稳定”选择。

isregular

  • 使用编码器。常数输入参数timeComponent常数。

  • 输入参数timeComponent不能为日历单元。如果指定了它,那么它的值必须为“时间”

issortedrows

  • 输入参数var必须是常数。

  • 如果任何时间表变量有多个列,那么这些变量必须具有固定的宽度。

加入

  • 一般来说,输入时间表不能有同名的非关键变量。但是,如果你指定了name-value参数,你可以连接输入时间表的子集:

    • “KeepOneCopy”,其中只列出从左侧输入时间表中提取的变量。

    • “LeftVariables”而且“RightVariables”,其中列出从左侧输入时间表或右侧输入时间表中提取的变量,但不能同时从两者中提取。

  • 这些name-value参数的值必须为常量:

    • “钥匙”

    • “LeftKeys”

    • “RightKeys”

    • “LeftVariables”

    • “RightVariables”

    • “KeepOneCopy”

  • 不支持嵌套时间表。金宝app

movevars

  • 输入参数var不能包含重复的变量名。

outerjoin

  • 的值,否则输入时间表的关键变量不能同名“MergeKeys”真正的(逻辑1).

  • 一般来说,输入时间表不能有任何同名的非关键变量。属性,则可以联接输入时间表的子集“LeftVariables”而且“RightVariables”名称-值参数。指定这些参数,使两个参数中都没有变量名“LeftVariables”而且“RightVariables”

  • 这些name-value参数的值必须为常量:

    • “钥匙”

    • “LeftKeys”

    • “RightKeys”

    • “MergeKeys”

    • “LeftVariables”

    • “RightVariables”

    • “类型”

  • 不支持嵌套时间表。金宝app

调整时间

同步

  • 输出时间表的行时间被认为是不规则的,即使与具有规则时间步长的行时间同步也是如此。

  • “makima”不支持插值方法。金宝app

  • 如果VariableContinuity输入时间表的属性不是常量,那么这个函数忽略它们。

  • “周”,“月”,“季度”不支持时间步长。金宝app

    • 如果输入时间表的行时间为datetime值,然后“每天”而且“年”时间步长也不支持。金宝app

sortrows

  • 输入参数var必须是常数。

  • 如果tblA具有一个变量,该变量是由具有多列的字符向量组成的单元格数组,则不能使用该变量中的值对时间表进行排序。

splitvars

  • 的值“NewVariableNames”名称-值参数必须为常量。

  • 被分割的变量不能有可变数量的列。

堆栈

  • 第二个输入参数,var,必须是不变的。

  • 的值“ConstantVariables”,“NewDataVariableName”,“IndexVariableName”名称-值参数必须为常量。

timerange

  • 输入参数unitOfTime不支持。金宝app

unstack

  • “NewDataVariableNames”必须指定名称-值参数。它的值必须是常数。

  • var而且实例变量输入参数(数据变量和指示器变量)必须是常量。

  • 如果指定分组变量和常量变量,则它们必须是常量。

  • 如果指定一个聚合函数,那么它必须是常数。

  • 如果输入是具有规则行时间的时间表,并且您指定了不包括行时间的分组变量,那么输出时间表可能具有不规则的行时间。尽管输出行时间之间的间隔可能看起来相同,但输出时间表认为行时间向量是不规则的。

  • 如果输入时间表的变量是字符向量的单元格数组,则unstack在生成的代码中用1 × 0字符数组填充相应输出变量中的空单元格。在MATLAB中,unstack用0 × 0字符数组填充这些空白。

  • unstack当输入时间表具有不能转换为同构单元格金宝app数组的异构单元格数组变量时,函数不支持代码生成。

    • 如果输入的变量是齐次单元格数组,或者可以转换为齐次单元格数组,则“AggregationFunction”必须指定名称-值参数。的默认值“AggregationFunction”“独特的”.但是,独特的函数不支持单元格数组。金宝app

varfun

  • 函数处理输入,函数,必须是不变的。

  • 而函数句柄可以输入varfun它们本身不能作为入口点函数的输入。指定函数在用于代码生成的代码中。有关更多信息,请参见代码生成的函数句柄限制

  • 所有名称-值参数的值必须为常量。

  • “ErrorHandler”代码生成不支持名称-值参数。金宝app

  • 不支持可变大小的输入参数。金宝app

  • 如果你指定“GroupingVariables”,那么输出的总是一个不规则的时间表。

  • 在生成的代码中,分组变量不能有重复的值。

  • 的值不能指定“OutputFormat”作为“细胞”如果您指定“GroupingVariables”参数的名称-值,函数为指定的每个变量返回不同的数据类型“数据源”

  • 如果指定了组,而组的数量在编译时未知,并且该数字为0,那么在生成的代码中,输出中的空双变量的大小可能为1乘0。在MATLAB中,这些变量的大小为0 × 0。

另请参阅

||

相关的话题