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