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上的。

lengthnumel是我们团队多年来的讨论话题。 Ex高级开发人员并不关心代码的可靠性,只关心正在完成的工作,只能使用其他不可读/格式化的代码。 其他人是一个math家,只用于他的“真正的”数组数组。 对于单元arrays和结构数组,他使用了numel