主要内容

表限制代码生成

如果你创建表,修改它们,或者使用MATLAB的表函数®你打算让代码生成的代码,然后接下来的部分将描述代码生成有限制。限制适用于类也适用于表。类限制的更多信息,请参阅MATLAB类定义代码生成

创建表的局限性

如果你的MATLAB代码创建表,那么代码生成了这些限制。

输入的表创建

限制

任何输入

  • 表变量名称不需要有效的MATLAB标识符。名称必须是由ASCII字符,包括逗号,破折号,空格字符。

表创建的输入数组

  • 您必须指定变量名称使用“VariableNames”名称-值参数从输入数组在创建表时使用,array2table,或cell2table功能。

与预先分配表创建变量

  • 你不需要指定“VariableNames”论点preallocate表时使用函数和“大小”名称-值参数。

  • 您可以指定只通过使用以下数据类型“VariableTypes”名称-值参数:

    • “双”

    • “单一”

    • “doublenan”“doubleNaN”

    • “singlenan”“singleNaN”

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

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

    • “逻辑”

    • “持续时间”

    • “cellstr”

    • “字符”

修改表的局限性

如果你的MATLAB代码修改数据表或其属性,那么代码生成这些限制。

表操作或属性

限制

VariableNames,RowNames,DimensionNames,或用户数据属性

  • 你不能改变VariableNames,RowNames,DimensionNames,或用户数据一个表在您创建它的属性。

    您可以指定“VariableNames”,“RowNames”,“DimensionNames”当你创建一个表输入参数。这些输入参数指定属性。

表索引指定要生成的代码变量作为输入参数

  • 通过表索引指定变量作为输入参数生成的代码,先让指数不断的使用coder.Constant函数。如果表索引不是常数,然后索引变量产生一个错误。

自定义元数据

  • 你不能添加自定义元数据表。的addproprmprop不支持的功能。金宝app

作业,改变表的大小

  • 你不能改变大小的分配表。例如,添加一个新行产生一个错误。

    函数T = foo ()% # codegenT =表((1:3)”,(1:3)”,“VariableNames”,{“Var1”,“Var2”});T (4,2) = 5;结束

    删除一行或一个变量也会产生一个错误。

垂直连接

  • 当你垂直连接表,他们必须有相同的变量名相同的顺序。在MATLAB中,变量名必须相同,但可以在不同的订单表。

横向连接

  • 当你横向连接表和表行名称,他们必须有相同的行名称相同的顺序。在MATLAB中,行名称必须相同,但可以在不同的订单表。

表变量一天细胞阵列

  • 如果两个表有一天细胞数组变量,然后不能垂直连接表。

  • 您不能使用花括号来提取数据从多个表一天细胞数组变量,因为这种操作是水平的连接。

用表函数的局限性

如果你的MATLAB代码使用中列出的功能表,那么代码生成这些限制。

函数

限制

convertvars

  • 不支持函数处理。金宝app

  • 第二个和第三个输入参数(var数据类型)必须是常数。

  • 你不能指定数据类型作为“细胞”,“cellstr”,或“字符”

innerjoin

  • 一般来说,输入表不能有任何nonkey变量有相同的名称。然而,你可以加入如果指定输入表的子集“LeftVariables”“RightVariables”名称-值参数。指定这些参数都不出现变量名“LeftVariables”“RightVariables”

  • 这些名称-值参数的值必须是常数:

    • “钥匙”

    • “LeftKeys”

    • “RightKeys”

    • “LeftVariables”

    • “RightVariables”

  • 不支持嵌套表。金宝app

相交

setdiff

setxor

联盟

  • 这些功能支持无序表在所有情况下。金宝app你不需要指定“稳定”选择。

issortedrows

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

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

加入

  • 一般来说,输入表不能有nonkey变量有相同的名称。然而,您可以加入输入表的子集,如果您指定名称的参数:

    • “KeepOneCopy”,你从左边的变量列表输入表。

    • “LeftVariables”“RightVariables”,你从变量列表左边输入表或正确的输入表,但不能两者兼得。

  • 这些名称-值参数的值必须是常数:

    • “钥匙”

    • “LeftKeys”

    • “RightKeys”

    • “LeftVariables”

    • “RightVariables”

    • “KeepOneCopy”

  • 不支持嵌套表。金宝app

movevars

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

outerjoin

  • 输入表不能用相同的名称,除非有关键变量的值“MergeKeys”真正的(逻辑1)。

  • 一般来说,输入表不能有任何nonkey变量有相同的名称。然而,你可以加入如果指定输入表的子集“LeftVariables”“RightVariables”名称-值参数。指定这些参数都不出现变量名“LeftVariables”“RightVariables”

  • 这些名称-值参数的值必须是常数:

    • “钥匙”

    • “LeftKeys”

    • “RightKeys”

    • “MergeKeys”

    • “LeftVariables”

    • “RightVariables”

    • “类型”

  • 不支持嵌套表。金宝app

rows2vars

  • 输入表不能适应。

  • “VariableNamesSource”不支持名称参数。金宝app

  • 的值“DataVariables”名称-值参数必须是常数。

  • 的值“VariableNamingRule”名称-值参数必须是常数。

  • 如果你分配行名称输入表,然后行向量的名称必须是常数。

sortrows

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

  • 如果tblA一个变量,是一个单元阵列的性格与多个列向量,然后你不能使用这个变量中的值对表进行排序。

splitvars

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

  • 分裂不能有一个变量的变量的列数。

堆栈

  • 第二个输入参数,var,必须是常数。

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

unstack

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

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

  • 如果您指定分组变量和常数变量,然后他们必须是常数。

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

  • 如果一个变量的输入表的单元阵列特征向量,然后unstack填充空的细胞在相应的输出变量与1-by-0字符数组生成的代码。在MATLAB中,unstack填补这些空白0-by-0字符数组。

  • unstack功能不支持代码生成时输入表有一个变量金宝app是一个异构单元阵列,不能转化为齐次单元阵列。

    • 如果输入一个变量,是一个均匀的细胞数组,或者是可以相互转化的,那么“AggregationFunction”名称-值参数必须被指定。的默认值“AggregationFunction”“独特的”。但是,独特的功能不支持细胞阵列。金宝app

varfun

  • 函数处理输入,函数,必须是常数。

  • 同时可以输入函数处理varfun本身,它们不能被输入到你的入口点函数。指定函数在针对代码生成的代码。有关更多信息,请参见函数处理限制代码生成

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

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

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

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

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

  • 如果您指定团体和团体的数量是在编译时不知道,数量是零,那么空的双变量的输出可能大小1-by-0在生成的代码。在MATLAB中,这些变量0-by-0大小。

另请参阅

|||

相关的话题