使用多维数组的长度

MATLAB 编码器常见的错误是将 length 函数用于矩阵(与向量相反,它是预期的)。length 函数,如其文档中所述 ,“ 返回输入的最大数组维度的长度 ”。

对于向量,length 的返回值有两个不同的含义:

  1. 向量中元素的总数。
  2. 向量的最大维度。

与向量不同,对于多于一个非单一(即,其大小大于 1)维度的数组,上述值将不相等。这就是为什么将 length 用于矩阵是不明确的。相反,即使使用向量,也鼓励使用以下函数之一,以使代码的意图非常清晰:

  1. size(A) - 返回一个行向量,其元素包含 A 对应维度的元素数量。
  2. numel(A) - 返回 A的元素数量。相当于 prod(size(A))
  3. ndims(A) - 返回数组 A 中的维数。相当于 numel(size(A))

在编写面向未来矢量化库函数时,这一点尤其重要,它们的输入事先不知道,并且可以具有各种大小和形状。