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