主要内容

工具箱函数代码生成的变量大小限制

常见的限制

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

变长向量限制

库函数的输入必须是可变长度的向量或固定大小的向量。变长向量是一个具有形状的变大小数组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++代码生成支持的函数和对象

函数 对可变大小数据的限制
所有

  • 看到自动尺寸限制

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

任何

  • 看到自动尺寸限制

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

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

conv

  • 看到变长向量限制

  • 输入向量必须有相同的方向,无论是行向量还是列向量。

交叉

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

deconv

去趋势

诊断接头

diff

  • 看到自动尺寸限制

  • 当输入是可变尺寸时,工作尺寸的长度必须大于差阶输入。例如,如果输入是一个在运行时是3乘5的可变大小矩阵,diff (x, 2, - 1)但工作diff (x 5 - 1)生成运行时错误。

fft

过滤器

histc

传输线

ind2sub

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

interp1

interpft

ipermute

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

issorted

魔法

  • 参数必须是一个常数。

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

马克斯

maxk

的意思是

  • 看到自动尺寸限制

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

中位数

  • 看到自动尺寸限制

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

最小值

模式

  • 看到自动尺寸限制

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

mtimes

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

nchoosek

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

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

  • 你不能通过传入一个变量来创建一个可变大小的数组,k除非您启用动态分配

交换

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

planerot

  • 输入必须是一个固定大小的双元素列向量。它不能是一个在运行时采用2 × 1大小的变大小数组。

polyfit

刺激

  • 看到自动尺寸限制

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

兰德

  • 对于一个上界变量N兰特(1,N)生成一个可变长度的向量1 x: M在哪里上限打开了吗N

  • 对于一个上界变量N兰德(N [1])可以产生一个可变长度的向量: 1 x: M在哪里上限打开了吗N

兰迪

  • 对于一个上界变量N兰迪(imax 1 N)生成一个可变长度的向量1 x: M在哪里上限打开了吗N

  • 对于一个上界变量N兰迪(imax, N [1])可以产生一个可变长度的向量: 1 x: M在哪里上限打开了吗N

randn

  • 对于一个上界变量Nrandn (1, N)生成一个可变长度的向量1 x: M在哪里上限打开了吗N

  • 对于一个上界变量Nrandn (N [1])可以产生一个可变长度的向量: 1 x: M在哪里上限打开了吗N

重塑

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

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

shiftdim

  • 如果不提供第二个参数,则移位数在编译时由维度大小的上界确定。因此,在运行时移位的数量是恒定的。

  • 如果被移到第一个维度的维度在运行时长度为1,则会发生错误。为了避免错误,提供移位数作为第二个输入参数(必须是一个常数)。

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

排序

性病

  • 看到自动尺寸限制

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

sub2ind

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

总和

  • 看到自动尺寸限制

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

trapz

  • 看到自动尺寸限制

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

定型

var

  • 看到自动尺寸限制

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

vecnorm

Baidu
map