2013-05-10 2 views
6

Мне нужно вернуть первое значение в массиве, которое больше другого определенного значения. У меня есть:Когда использовать find над логической индексацией

find(A > val, 1, 'first') 

Согласно этому сообщению: https://stackoverflow.com/a/9464886/1985603 находки является неизбежной в этом случае. Но, о чем:

B = A(A > val); 
B(1) 

Есть ли веская причина использовать один над другим здесь, кроме дополнительной строки?

ответ

6

Да, есть; скорость! Специально для больших массивов, find будет значительно быстрее.

Подумайте об этом: операция A > val одинакова в обоих случаях, но

B = A(A > val) 

извлекает значения из A, и копирует их в новый массив B, которые должны будут быть выделены и скопировать назначенный , и временные файлы A(A> val) должны быть уничтожены.

Все find(A>val, 1, 'first') выполняет поиск списка логических элементов и возвращает одно число, когда оно встречает первое значение true; это намного менее бесполезное копирование/назначение/и т. д., и, следовательно, намного быстрее.

Как правило, если вы не используете дополнительные параметры в find, логическая индексация почти всегда предпочтительнее. Когда вам нужно или используйте дополнительные функции find, опция find почти всегда предпочтительнее.

+0

Спасибо! Это был именно тот ответ, который я искал :-) – mlai

Смежные вопросы