我知道length(x)
返回max(size(x))
并numel(x)
返回 x 的元素总数,但是对于 1 x n 数组,哪个更好?这是否重要,或者在这种情况下它们可以互换?
编辑:只是为了踢球:
看起来它们在性能方面是相同的,直到你达到 100k 个元素。
我知道length(x)
返回max(size(x))
并numel(x)
返回 x 的元素总数,但是对于 1 x n 数组,哪个更好?这是否重要,或者在这种情况下它们可以互换?
编辑:只是为了踢球:
看起来它们在性能方面是相同的,直到你达到 100k 个元素。
在这种情况下,它们返回相同并且没有区别。在性能方面,它取决于 MATLAB 中数组的内部工作。例如,如果有关于数组中有多少元素的元信息(无论形状如何),那么 numel 尽可能快,而 max(size(x)) 似乎需要更多的工作才能获得相同的东西(检索大小,然后找到其中的最大值)。我习惯numel
在那种情况下使用,但除了表演演讲(假设)之外,我会说它们是可以互换的。
正如其他人所说,它们对于一维数组是相同的。
从代码可读性的角度来看,恕我直言,length
应该在一维数组上使用。它是关于“有意编程”的,你看到代码并理解程序员在构思他的工作时的想法。所以当我看到numel
我知道它用于矩阵时。
length
vs.numel
是我们团队多年来的一个讨论话题。前高级开发人员并不关心代码的可重复性,只关心正在完成的工作,并且只numel
在其他可读性/格式不佳的代码中使用。另一个人是数学家,length
仅用于数字数组,对他来说是“真实”数组。对于单元格数组和结构数组,他使用numel
.