我知道length(x)
返回max(size(x))
而numel(x)
返回x的元素总数,但对于1 x n数组哪个更好?它是否重要,或者在这种情况下它们是否可以互换?
编辑:只是为了踢:
在你获得100k元素之前,看起来它们的性能是相同的。
答案 0 :(得分:19)
对于1-by-N阵列,它们基本相同。对于多维数组M
,它们可以给出不同的结果:
答案 1 :(得分:18)
在这种情况下,他们返回相同的,没有区别。在性能方面,它取决于MATLAB中数组的内部工作。例如。如果有关于数组中有多少元素的元信息(无论形状如何),那么numel尽可能快,而max(size(x))似乎需要更多的工作来获得相同的东西(检索大小,和然后找到那些中的最大值)。我习惯在这种情况下使用numel
,但表演演讲(假设)除外,我想说它们是可以互换的。
答案 2 :(得分:9)
正如其他人所说,对于一维数组它们是相同的。
来自代码可读性观点length
的恕我直言应该用于一维数组。它大概是"intentional programming",您可以看到代码,并了解程序员在构思他的工作时的想法。所以当我看到numel
时,我知道它用在矩阵上。
length
与numel
是我们团队的讨论话题。前高级开发人员并不关心代码的可靠性,只关注正在完成的工作,并且只使用numel
来处理不可读/格式化的代码。其他人是一个matematician并且只在数字数组上使用length
为他的“真实”数组。对于单元格数组和结构数组,他使用了numel
。