我知道length(x)返回max(size(x)),numel(x)返回x的元素总数,但是哪一个对1×n数组更好?这重要吗,还是在这种情况下是可以互换的?
编辑:只用于踢:

看上去它们在性能上是一样的,直到你得到100 K元素。
发布于 2010-06-25 16:44:37
在这种情况下,他们返回相同的,没有区别。从性能上看,它依赖于MATLAB中阵列的内部工作。例如,如果数组中有多少个元素(不管形状如何),那么numel是尽可能快的,而max(size(x))似乎需要更多的工作才能获得相同的东西(检索大小,然后在其中找到最大值)。我习惯于在这种情况下使用numel,但是除了性能演讲(假设)之外,我认为它们是可以互换的。
发布于 2010-06-25 16:38:58
发布于 2010-06-25 16:52:18
正如其他人所说,它们对于一维数组是一样的。
从代码可读性角度来看,length应该在一维数组上使用.这是关于“有意拟订方案”的,您可以看到代码,并了解程序员在构思他的工作时的想法。所以当我看到numel时,我知道它是用在矩阵上的。
多年来,length与numel是我们团队中的一个讨论主题。前高级开发人员并不关心代码可重用性,只关心正在完成的工作,并且只在不太好读/格式化的代码中使用numel。另一个人是个矩阵学家,只在数字数组上使用length,这是给他“真实”数组的。对于单元格数组和结构数组,他使用了numel。
https://stackoverflow.com/questions/3119739
复制相似问题