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