coder.varsize
包:编码器
声明可变大小的数组
语法
coder.varsize (
“var1'
,“var2'
,……)
coder.varsize (“var1'
,“var2'
、……ubound
)
coder.varsize (“var1'
,“var2'
、……ubound
,会变暗
)
coder.varsize (“var1'
,“var2'
、……[],会变暗
)
描述
coder.varsize (
将一个或多个变量声明为可变大小的数据,允许后续赋值扩展其大小。每一个“var1'
,“var2'
,……)“varn'
用引号括起来的变量或结构字段的名称。如果structure字段属于一个结构数组,则使用冒号(:
)作为索引表达式,使数组中所有元素的字段大小可变。例如,表达式coder.varsize(“数据(:)。”)
声明字段一个
的每个元素中数据
是可变大小的。
coder.varsize (
将一个或多个变量声明为可变大小的数据,并在中指定显式上界“var1'
,“var2'
、……ubound
)ubound
。这个论点ubound
必须是一个常数,每一个维度的上界大小的整数值向量“varn'
。如果您指定了多个“varn'
,每个变量必须具有相同的维数。
coder.varsize (
将一个或多个变量声明为变量大小,并具有显式的上界以及中指定的固定和变化维度的混合“var1'
,“var2'
、……ubound
,会变暗
)会变暗
。这个论点会变暗
是一个逻辑向量,或只包含0和1的双向量。维度对应于0或假
在会变暗
有固定的尺寸;维度对应于1或真正的
大小不同。如果指定多个变量,则每个固定维度必须在所有维度中具有相同的值“varn'
。
coder.varsize (
将一个或多个变量声明为固定维度和可变维度的混合可变大小。空向量“var1'
,“var2'
、……[],会变暗
)[]
意味着你不需要指定一个显式的上界。
当你这样做的时候不指定ubound
,计算每个的上界“varn'
生成的代码。
当你这样做的时候不指定会变暗
,维度被假定为可变的,除了单例维度。单例维度是这样一种维度大小
(暗)
= 1。
您必须添加coder.varsize
每次前的声明“varn'
被使用(读)。您可以在每个函数的第一个赋值之前添加声明“varn'
。但是,对于单元格数组元素,coder.varsize
声明必须跟在元素的第一个赋值之后。例如:
…X = cell(3,3);X {1} = [12];coder.varsize (x) {1});...
你不能用coder.varsize
在MATLAB之外®用于代码生成的代码。例如,下面的代码没有声明变量,var
,作为可变大小的数据:
coder.varsize(“var”,10);codegen -config:lib MyFile -args var
相反,要包括coder.varsize
声明内MyFile
要申报的var
可变大小的数据。或者,您可以使用coder.typeof
要申报的var
作为可变大小的外部MyFile
。然后可以传递给MyFile
在代码生成过程中使用arg游戏
选择。有关更多信息,请参见coder.typeof
。
例子
限制
如果使用单元格函数创建
细胞
数组,不能使用coder.varsize
用那个单元格数组。如果你使用
coder.varsize
的单元格数组元素coder.varsize
声明必须跟在元素的第一个赋值之后。例如:…X = cell(3,3);X {1} = [12];coder.varsize (x) {1});...
你不能用
coder.varsize
单元格阵列输入是异构的。你不能用
coder.varsize
使用全局变量。你不能用
coder.varsize
用MATLAB类的属性。你不能用
coder.varsize
用字符串标量。
提示
coder.varsize
固定单个维度的大小,除非会变暗
参数显式指定单例维度具有可变大小。例如,下面的代码指定了
v
尺寸为1 × 10。第一个维度(单例维度)具有固定的大小。第二个维度的大小是可变的。coder.varsize (“v”, [10])
v
尺寸:1 × 10。这两个维度的大小都是可变的。coder.varsize (“v”[1, 10], [1])
请注意
对于一个MATLAB函数输入或输出信号的块、单维不能有可变的大小。
如果使用输入变量(或使用输入变量的计算结果)来指定数组的大小,则在生成的代码中将其声明为可变大小。不要使用
coder.varsize
除非您还想为其大小指定上界,否则再次对数组进行操作。使用
coder.varsize
在没有显式上界的数组上,会导致数组的动态内存分配。这种动态内存分配可以降低生成代码的速度。要避免动态内存分配,请使用语法coder.varsize (
指定数组大小的上限(如果您事先知道的话)。“var1'
,“var2'
、……ubound
)单元格数组只有在均匀的情况下才能可变大小。当你使用
coder.varsize
对于单元格数组,代码生成器将尝试使单元格数组同构。它试图找到适用于单元格数组的所有元素的类和大小。例如,如果第一个元素是double,第二个元素是1x2 double,那么所有元素都可以表示为1x:2 double。如果代码生成器找不到通用的类和大小,则代码生成失败。例如,假设单元格数组的第一个元素是char,第二个元素是double。代码生成器找不到可以表示这两个元素的类。