6
我需要在一个阵列比另一个特定的值时返回的第一个值。我有:当使用在寻找逻辑索引
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
,这将有被分配并复制分配,并且临时将不得不销毁。
全部find(A>val, 1, 'first')
确实是遍历逻辑列表,并在遇到第一个true
值时返回单个数字;这比没有用的复制/分配等要少得多,因此速度要快得多。
作为一个经验法则,当你不find
使用其他选项,逻辑索引几乎总是最好。当你需要或使用find
的附加功能,该find
选项几乎总是最好。
谢谢!这正是我寻找的答案:-) – mlai 2013-05-11 13:22:47