使用多维数组的长度
MATLAB 编码器常见的错误是将 length
函数用于矩阵(与向量相反,它是预期的)。length
函数,如其文档中所述 ,“ 返回输入的最大数组维度的长度 ”。
对于向量,length
的返回值有两个不同的含义:
- 向量中元素的总数。
- 向量的最大维度。
与向量不同,对于多于一个非单一(即,其大小大于 1
)维度的数组,上述值将不相等。这就是为什么将 length
用于矩阵是不明确的。相反,即使使用向量,也鼓励使用以下函数之一,以使代码的意图非常清晰:
size(A)
- 返回一个行向量,其元素包含A
对应维度的元素数量。numel(A)
- 返回A
中的元素数量。相当于prod(size(A))
。ndims(A)
- 返回数组A
中的维数。相当于numel(size(A))
。
在编写面向未来的矢量化库函数时,这一点尤其重要,它们的输入事先不知道,并且可以具有各种大小和形状。