工具箱函数代码生成的可变大小限制
常见的限制
以下常见限制适用于多个工具箱函数,但仅适用于代码生成。要确定哪些限制适用于特定的库函数,请参阅对可变大小数据有限制的工具箱函数.
变长矢量限制
库函数的输入必须是变长向量或固定大小的向量。变长向量是具有以下形状的变大小数组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限制
如果可变大小的数组在运行时假定标量值,则该函数将发出错误。要避免此问题,请将标量指定为固定大小。
对可变大小数据有限制的工具箱函数
下表列出了对可变大小数据具有代码生成限制的函数。有关这些函数的其他限制,以及代码生成支持的所有函数和对象的限制,请参见金宝appC/ c++代码生成支持的函数和对象金宝app.
函数 | 对可变大小数据的限制 |
---|---|
所有 |
|
任何 |
|
猫 |
|
conv |
|
浸 |
|
交叉 |
|
deconv |
|
去趋势 |
|
诊断接头 |
|
diff |
|
fft |
|
过滤器 |
|
嘘 |
|
histc |
|
传输线 |
|
ind2sub |
|
interp1 |
|
interpft |
|
ipermute |
|
issorted |
|
魔法 |
|
马克斯 |
|
maxk |
|
的意思是 |
|
中位数 |
|
最小值 |
|
貂 |
|
模式 |
|
mtimes |
考虑乘法 |
nchoosek |
|
交换 |
|
planerot |
|
聚 |
|
polyfit |
|
刺激 |
|
兰德 |
|
兰迪 |
|
randn |
|
重塑 |
|
根 |
|
shiftdim |
|
排序 |
|
性病 |
|
sub2ind |
|
总和 |
|
trapz |
|
定型 |
|
var |
|
vecnorm |
|