工具箱函数代码生成的变量大小限制
常见的限制
以下常见限制适用于多个工具箱函数,但仅适用于代码生成。要确定哪些限制适用于特定的库函数,请参见中的表对可变大小数据有限制的工具箱函数.
变长向量限制
库函数的输入必须是可变长度的向量或固定大小的向量。变长向量是一个具有形状的变大小数组1 x: n
或:资料片
(一个维度的大小是可变的,另一个的大小是固定的1)。其他形状是不允许的,即使它们在运行时是向量。
自动尺寸限制
这种限制适用于以工作维度(操作的维度)作为输入的函数。在MATLAB®在代码生成中,如果不提供工作维度,函数将选择它。在MATLAB中,函数选择大小不等于1的第一个维。对于代码生成,该函数选择第一个大小可变或大小固定且不等于1的维度。如果工作维度的大小是可变的,并且在运行时变为1,那么工作维度与MATLAB中的工作维度是不同的。因此,当启用运行时错误检查时,可能会发生错误。
例如,假设这样X
一个有维数的变大小矩阵1 x: 3 x: 5
.在生成的代码中,总和(X)
表现得像总和(X, 2)
.在MATLAB中,总和(X)
表现得像总和(X, 2)
除非大小(X, 2)
是1。在MATLAB中,当大小(X, 2)
是1,总和(X)
表现得像总和(X, 3)
.
要避免此问题,请将预期的工作维度显式指定为常量值。例如,总和(X, 2)
.
Array-to-vector限制
当非变长向量的变大小数组在运行时采用向量的形状时,该函数将发出错误。为了避免这个问题,将输入显式指定为变长向量而不是变大小数组。
Array-to-scalar限制
如果可变大小的数组在运行时假定为标量值,则该函数将发出错误。要避免这个问题,请将标量指定为固定大小。
对可变大小数据有限制的工具箱函数
下表列出了对可变大小数据有代码生成限制的函数。有关这些函数的其他限制,以及代码生成支持的所有函数和对象的限制,请参见C/ c++代码生成支持的函数和对象.
函数 | 对可变大小数据的限制 |
---|---|
所有 |
|
任何 |
|
猫 |
|
conv |
|
浸 |
|
交叉 |
|
deconv |
|
去趋势 |
|
诊断接头 |
|
diff |
|
fft |
|
过滤器 |
|
嘘 |
|
histc |
|
传输线 |
|
ind2sub |
|
interp1 |
|
interpft |
|
ipermute |
|
issorted |
|
魔法 |
|
马克斯 |
|
maxk |
|
的意思是 |
|
中位数 |
|
最小值 |
|
貂 |
|
模式 |
|
mtimes |
考虑到乘法 |
nchoosek |
|
交换 |
|
planerot |
|
聚 |
|
polyfit |
|
刺激 |
|
兰德 |
|
兰迪 |
|
randn |
|
重塑 |
|
根 |
|
shiftdim |
|
排序 |
|
性病 |
|
sub2ind |
|
总和 |
|
trapz |
|
定型 |
|
var |
|
vecnorm |
|