我需要返回数组中大于另一个特定值的第一个值。我有:
find(A > val, 1, 'first')
根据这篇文章:https : //stackoverflow.com/a/9464886/1985603 在这种情况下发现是不可避免的。但是关于:
B = A(A > val);
B(1)
除了额外的线之外,这里是否有充分的理由使用另一个?
我需要返回数组中大于另一个特定值的第一个值。我有:
find(A > val, 1, 'first')
根据这篇文章:https : //stackoverflow.com/a/9464886/1985603 在这种情况下发现是不可避免的。但是关于:
B = A(A > val);
B(1)
除了额外的线之外,这里是否有充分的理由使用另一个?
就在这里; 速度!特别是对于大型阵列,find
将明显更快。
想一想:A > val
两种情况下的操作都是一样的,但是
B = A(A > val)
从 中提取值A
,并将它们复制到一个新数组B
中,该数组必须被分配和复制分配,并且A(A> val)
必须销毁临时数组。
所做的只是遍历逻辑列表,并在find(A>val, 1, 'first')
遇到第一个值时返回一个数字true
;这减少了无用的复制/分配/等,因此速度更快。
根据经验,当您不使用 中的附加选项时find
,逻辑索引几乎总是更可取的。当您需要或使用find
的附加功能时,该find
选项几乎总是更可取的。