6

我需要返回数组中大于另一个特定值的第一个值。我有:

find(A > val, 1, 'first')

根据这篇文章:https : //stackoverflow.com/a/9464886/1985603 在这种情况下发现是不可避免的。但是关于:

B = A(A > val);
B(1)

除了额外的线之外,这里是否有充分的理由使用另一个?

4

1 回答 1

6

就在这里; 速度!特别是对于大型阵列,find将明显更快。

想一想:A > val两种情况下的操作都是一样的,但是

B = A(A > val)

从 中提取值A,并将它们复制到一个新数组B中,该数组必须被分配和复制分配,并且A(A> val)必须销毁临时数组。

所做的只是遍历逻辑列表,并在find(A>val, 1, 'first')遇到第一个值时返回一个数字true;这减少了无用的复制/分配/等,因此速度更快。

根据经验,当您不使用 中的附加选项时find,逻辑索引几乎总是更可取的。当您需要或使用find的附加功能时,该find选项几乎总是更可取的。

于 2013-05-11T06:53:37.680 回答