MATLAB的函数和长度函数的区别
我知道length(x)
返回max(size(x))
而numel(x)
返回numel(x)
的元素总数,但是对于1乘n数组来说哪个更好? 在这种情况下是重要的还是可以互换的?
编辑:只是踢:
看起来他们是相同的performance明智的,直到你达到10万元。
在这种情况下,他们返回相同的,没有任何区别。 就性能而言,它取决于MATLAB中数组的内部工作。 例如,如果存在有关数组中有多less元素的元信息(无论形状),则numel尽可能快,而max(size(x))似乎需要更多的工作来获得相同的东西(检索大小,然后在其中find最大值)。 在这种情况下,我习惯使用numel
,但是除了performance语言(假设的)之外,我会说它们是可以互换的。
对于1乘Narrays,它们本质上是相同的。 对于multidimensional arrayM
,他们可以给出不同的结果:
-
numel(M)
相当于prod(size(M))
。 -
length(M)
等于max(size(M))
。 如果M
是空的(即任何维数是0),那么length(M)
是0。
正如其他人所说,他们是相同的一维数组。
从代码可读性观点length
恕我直言应该在一维数组上使用。 它是关于“有意编程”的 ,你看代码,理解程序员在构思他的工作时心里想的是什么。 所以当我看到numel
我知道它是用在matrix上的。
length
与numel
是我们团队多年来的讨论话题。 Ex高级开发人员并不关心代码的可靠性,只关心正在完成的工作,只能使用其他不可读/格式化的代码。 其他人是一个math家,只用于他的“真正的”数组数组。 对于单元arrays和结构数组,他使用了numel
。