Нет, это не более эффективно, а в некоторых случаях может даже хуже. arrayfun
- это просто синтаксис c сахар для for
l oop. JIT Matlab может оптимизировать модификации предварительно выделенных массивов "на месте". Я не встречал случаев, когда arrayfun()
, используемый с дескриптором функции, работает лучше, чем for
l oop и предварительно выделенные массивы в последних версиях Matlab-i sh.
В вашем конкретном случае , они, вероятно, будут работать примерно так же. Так что используйте тот стиль, который вам больше нравится.
Обратите внимание, что, строго говоря, arrayfun
не выполняет , а операции "векторизованные". «векторизованный» относится к некоторому встроенному средству Matlab, которое может работать со всем массивом внутри движка Matlab, используя. arrayfun
не может волшебным образом сделать это.
Исключение: если вы используете Matlab Parallel Computing Toolbox или работаете с массивами tall
, тогда arrayfun
действительно может распараллеливать операции в нескольких массивах элементов, и может go быстрее, чем a для l oop.