coder.varsize
声明适应数据
语法
描述
coder.varsize (
声明命名的变量varName1,…,varNameN
)varName1,…,varNameN
拥有可变的大小。声明指示代码生成器允许变量在执行生成的代码期间更改大小。使用这种语法,您不需要指定变量维度的上界,也不需要指定哪些维度可以更改大小。代码生成器计算上界。所有维度,除了单维度,允许改变大小。
使用coder.varsize
根据这些限制和指导方针:
使用
coder.varsize
在MATLAB®用于代码生成的函数。的
coder.varsize
声明必须在第一次使用变量之前进行。例如:...x = 1;coder.varsize(“x”);disp(大小(x));...
使用
coder.varsize
声明输出参数具有可变大小或处理大小不匹配错误。否则,要定义可变大小的数据,请使用中描述的方法为代码生成定义可变大小的数据.
请注意
为MATLAB函数方法来声明可变大小的输出变量符号窗格和属性检查器。看到声明可变大小的MATLAB函数块变量(模型).的上界coder.varsize
声明时,上界必须与属性检查器中的上界匹配。
coder.varsize (
还指定变量的每个维度的上限。所有变量的维数必须相同。所有维度,除了单维度,允许改变大小。varName1,…,varNameN
,ubounds
)
coder.varsize (
还指定变量的每个维度的上限,以及每个维度的大小是固定的还是可变的。如果一个维度具有固定的大小,则对应的varName1,…,varNameN
,ubounds
,会变暗
)ubound
元素指定维度的固定大小。所有变量都具有相同的固定尺寸尺寸和相同的可变尺寸尺寸。
例子
输入参数
限制
的
coder.varsize
声明指示代码生成器允许更改变量的大小。它不改变变量的大小。考虑这段代码:...x = 7;coder.varsize (“x”(1、5));disp(大小(x));...
后
coder.varsize
声明,x
仍然是1 × 1数组。的当前大小以外的元素不能赋值x
.例如,这段代码会产生一个运行时错误,因为索引3超过的维度x
....x = 7;coder.varsize (“x”(1、5));x (3) = 1;...
coder.varsize
对于函数输入参数不支持。而不是:如果函数是一个入口点函数,则使用
coder.typeof
在命令行。方法指定入口点函数输入参数具有可变大小定义输入类型应用程序的步骤。如果函数不是入口点函数,则使用
coder.varsize
在调用函数中,变量是被调用函数的输入。
为稀疏矩阵,
coder.varsize
删除可变尺寸尺寸的上界。限制使用
coder.varsize
细胞数组:只有在单元格数组是均匀的情况下,它才能具有可变的大小。当你使用
coder.varsize
对于异构单元格数组,代码生成器试图使单元格数组同构。代码生成器试图找到适用于单元格数组的所有元素的类和最大大小。例如,考虑单元格数组C = {1, [2 3]}
.这两个元素都可以用双重类型表示,其第一个维度的大小固定为1,第二个维度的大小可变,上限为2。如果代码生成器找不到公共类和最大大小,则代码生成失败。例如,考虑单元格数组C = {'a',[2 3]}
.代码生成器找不到可以表示这两个元素的类,因为第一个元素是字符
第二个元素是双
.如果您使用
细胞
函数定义固定大小的单元格数组时,不能使用coder.varsize
指定单元格数组具有可变大小。例如,此代码会导致代码生成错误,因为x =细胞(1、3)
使x
固定大小的1 × 3单元阵列。...x =细胞(1、3);coder.varsize (“x”[1 5])...
您可以使用
coder.varsize
使用使用花括号定义的单元格数组。例如:...X = {1 2 3};coder.varsize (“x”[1 5])...
方法来创建可变大小的单元格数组
细胞
函数,使用以下代码模式:函数mycell (n)% # codegenx =细胞(1,n);为I = 1:n x{I} = I;结束结束
要指定单元格数组的上界,请使用
coder.varsize
.函数mycell (n)% # codegenx =细胞(1,n);为I = 1:n x{I} = I;coder.varsize (“x”, 1, 20);结束结束
coder.varsize
不支持:全局变量
MATLAB类或类属性
字符串标量
更多关于
提示
在代码生成报告或MATLAB函数报告中,冒号(:)表示维度的大小是可变的。例如,大小为
1 x: 2
指示第一个维度的固定大小为1,第二个维度的可变大小为2。如果你使用
coder.varsize
如果要指定维度的上限为1,默认情况下,维度的固定大小为1。类的对应元素可以指定维度为0(空数组)或1会变暗
参数真正的
.例如,此代码指定的第一个维度x
固定大小为1,其他尺寸为可变大小5。coder.varsize (“x”(1、5、5))
的第一个维度
x
上限为1,大小可变(可以是0或1)。coder.varsize (“x”(1、5、5),(1,1,1))
请注意
对于一个MATLAB函数块,则不能指定大小为1的输出信号具有可变大小。
如果使用输入变量或使用输入变量的计算结果来指定数组的大小,则在生成的代码中将其声明为variable-size。不重用
coder.varsize
除非您还想指定其大小的上限。如果不指定上界
coder.varsize
声明和代码生成器无法确定上界时,生成的代码使用动态内存分配。动态内存分配可以降低生成代码的速度。为避免动态内存分配,请通过提供ubounds
论点。
版本历史
介绍了R2011a