別の特定の値より大きい配列の最初の値を返す必要があります。私は持っている:
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
場合は、ほとんどの場合、このオプションを使用することをお勧めします。