文件

用于工具箱函数的代码生成的可变大小限制

常见的限制

以下常见限制适用于多个工具箱函数,但仅用于代码生成。要确定哪些限制适用于特定的库函数,请参见具有可变大小数据限制的工具箱函数

可变长度矢量限制

对库函数的输入必须是可变长度的向量或固定大小向量。可变长度矢量是具有形状的可变大小阵列1x: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)

数组到矢量限制

当不是可变长度向量的变量阵列在运行时呈现矢量的形状时,该函数发出错误。为避免此问题,请明确指定输入作为可变长度向量而不是变量大小的数组。

数组到标量限制

如果可变大小阵列在运行时呈现标量值,则该函数发出错误。要避免此问题,请将scalars指定为固定大小。

具有可变大小数据限制的工具箱函数

下表列表具有用于可变大小数据的代码生成限制的函数。有关这些函数的其他限制,并且对代码生成支持的所有功能和对象的限制,请参阅金宝appC / C ++代码生成的函数和对象 - 字金宝app母列表

函数 可变大小数据的限制
所有
  • 自动尺寸限制

  • 如果在运行时向第一个参数传递大小为0 × 0的可变矩阵,则会发生错误。

任何
  • 自动尺寸限制

  • 如果在运行时向第一个参数传递大小为0 × 0的可变矩阵,则会发生错误。

BSXFUN.
  • 只有当一个或另一个输入数组的长度固定为1时,维度才会展开。

  • 维度参数必须是一个常量。

  • 如果变量大小的输入在运行时为空,则会发生错误。

conv
交叉
  • 在运行时成为矢量的可变大小数组输入必须具有相同的方向。

deconv
去趋势
诊断接头
  • 自动尺寸限制

  • 当输入是变量大小时,工作维度的长度必须大于差分顺序输入。例如,如果输入是运行时为3×5的变量大小矩阵,差异(x,2,1)工作但是diff (x 5 - 1)生成运行时错误。

fft
过滤器
hist
hisc.
IFFT.
Ind2sub.
  • 第一个输入(大小向量输入)必须是固定的大小。

interp1
我是
  • 订单输入必须是固定的大小。

issorted
魔法
  • 参数必须是一个常数。

  • 输出只能是固定大小的矩阵。

马克斯
的意思是
  • 自动尺寸限制

  • 如果您通过第一个参数,则会发生错误,该参数在运行时为0-by-0的变量大小矩阵。

中位数
  • 自动尺寸限制

  • 如果您通过第一个参数,则会发生错误,该参数在运行时为0-by-0的变量大小矩阵。

模式
  • 自动尺寸限制

  • 如果您通过第一个参数,则会发生错误,该参数在运行时为0-by-0的变量大小矩阵。

m

考虑乘法A * B.如果代码生成器知道一种是标量,B.是一个矩阵,代码生成器产生标量矩阵乘法的代码。但是,如果代码生成器意识到这一点一种B.是可变大小的矩阵,它产生常规矩阵乘法的代码。在运行时,如果一种结果是标量,生成的代码不会改变其行为。因此,当启用运行时错误检查时,可能会发生大小不匹配错误。

nchoosek.
  • 第二个输入,K.,必须是一个固定大小的标量。

  • 第二个输入,K.,必须为静态分配的常量。如果启用动态分配,则第二个输入可以是一个变量

  • 您无法通过在变量中创建可变大小的数组,K.除非你启用了动态分配

交换
  • 订单输入必须是固定大小的。

平局
  • 输入必须是固定大小的两个元素列向量。它不能是一个可变大小的数组,它在运行时占据大小2-1。

Polyfit.
刺激
  • 自动尺寸限制

  • 如果您通过第一个参数,则会发生错误,该参数在运行时为0-by-0的变量大小矩阵。

兰特
  • 对于上限变量N兰特(1,n)产生可变长度的向量1 x: M在哪里m是上限N

  • 对于上限变量N兰德(N [1])可以产生可变长度的向量:1x:m在哪里m是上限N

兰迪
  • 对于上限变量N兰迪(imax 1 N)产生可变长度的向量1 x: M在哪里m是上限N

  • 对于上限变量N兰迪(IMAX,[1 n])可以产生可变长度的向量:1x:m在哪里m是上限N

兰德
  • 对于上限变量NRandn(1,N)产生可变长度的向量1 x: M在哪里m是上限N

  • 对于上限变量Nrandn (N [1])可以产生可变长度的向量:1x:m在哪里m是上限N

重塑
  • 如果输入是一个可变大小数组,而输出数组至少有一个固定长度的维度,则不要在大小向量中指定输出维度大小SZ..相反,将输出维度尺寸指定为标量值,sz1,…,szN.将固定尺寸的尺寸指定为常量。

  • 当输入是一个可变大小的空数组时,输出数组(也是空数组)的最大维数不能大于输入数组的维数。

Shiftdim.
  • 如果您不提供第二个参数,则在编译时间由维度大小的上限确定班次次数。因此,在运行时换档的数量是恒定的。

  • 如果转移到第一维度的维度在运行时具有长度为1,则会发生错误。为避免错误,请向第二个输入参数提供班次的数量(必须是常数)。

  • 当您提供正数移位时,第一个输入参数必须具有相同的维数。

STD.
  • 自动尺寸限制

  • 如果在运行时传递一个尺寸为0 × 0的可变矩阵,则会发生错误。

次级
  • 第一个输入(大小向量输入)必须是固定的大小。

  • 自动尺寸限制

  • 如果您通过第一个参数,则会发生错误,该参数在运行时为0-by-0的变量大小矩阵。

trapz.
  • 自动尺寸限制

  • 如果您通过第一个参数,则会发生错误,该参数在运行时为0-by-0的变量大小矩阵。

typeCast.
var
  • 自动尺寸限制

  • 如果在运行时传递一个尺寸为0 × 0的可变矩阵,则会发生错误。

这个话题有用吗?