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