对于代码生成,数组维是固定大小或适应.如果代码生成器可以确定维度的大小,并且维度的大小不改变,那么维度的大小是固定的。当数组的所有维度都是固定大小时,该数组为固定大小数组中。在下面的例子中,Z
是一个固定大小的数组。
函数Z = myfcn() Z = 0 (1,4);结束
第一个维度的大小是1,第二个维度的大小是4。
如果代码生成器不能确定维度的大小,或者代码生成器确定维度的大小发生了变化,则该维度为可变大小。如果数组中至少有一个维是可变大小的,则该数组为适应数组中。
可变尺寸的维度是有界的或无限.有界维度的上限是固定的。无界尺寸没有固定的上限。
在下面的例子中,第二个维度Z
是有界的,适应。它的上限是16。
函数s = myfcn (n)如果(n > 0) Z = 0 (1,4);其他的Z = 0 (16);结束s =长度(Z);
在下面的示例中,如果n
在编译时是未知的,那么Z
是无限的。
函数s = myfcn(n) Z = rand(1,n);s =总和(Z);结束
你可以通过以下方式定义可变大小数组:
使用构造函数,例如0
,具有非恒定维度
在使用同一个变量之前,为其指定多个常量大小
使用。声明变量的所有实例为变量大小coder.varsize
有关更多信息,请参见为代码生成定义可变大小的数据.
您可以控制是否允许使用可变大小的数组生成代码。看到启用和禁用可变大小阵列支持万博1manbetx.
对于固定大小的数组和大小小于阈值的可变大小的数组,代码生成器在堆栈上静态分配内存。对于大小大于或等于阈值的无界、可变大小数组和可变大小数组,代码生成器在堆上动态分配内存。
您可以控制是否允许动态内存分配,或者何时将其用于代码生成。看到控制可变大小数组的内存分配.
代码生成器将动态分配的数据表示为被调用的结构类型emxArray
.代码生成器生成用于创建emxArrays并与之交互的实用函数。如果你使用嵌入式编码器®,可以自定义生成的标识符emxArray
类型和实用函数。看到标识符的格式控制(嵌入式编码)。
默认情况下,支持可变大小万博1manbetx的数组。要修改此支持:万博1manbetx
在代码配置对象中,设置EnableVariableSizing
参数真正的
或假
.
在MATLAB®编码器™应用程序,内存设置,选择或清除使适应复选框。
属性可以判断一个数组是固定大小的还是可变大小的大小列的变量选项卡在代码生成报告中。
冒号(:)表示维度是可变大小的。问号(?)表示大小是无界的。例如,大小为1 by-:?指示第一个维度的大小为固定大小1,第二个维度的大小为无界的可变大小。斜体表示代码生成器生成了一个可变大小的数组,但数组的大小在执行期间不改变。