Файлы справки, поставляемые с Octave, имеют следующую запись:
19.1 Базовая векторизация
В очень хорошем первом приближении цель векторизации состоит в том, чтобы
написать код, который избегает циклов и использует операции с целыми массивами. Как
тривиальный пример, рассмотрим
for i = 1:n
for j = 1:m
c(i,j) = a(i,j) + b(i,j);
endfor
endfor
по сравнению с гораздо более простым
c = a + b;
Это не просто легче написать; это также внутренне намного легче
оптимизировать. Octave делегирует эту операцию основному
реализация, которая, помимо других оптимизаций, может использовать специальный вектор
аппаратные инструкции или, возможно, даже могут выполнять дополнения в
параллельно. Как правило, если код векторизован,
реализация имеет больше свободы в отношении допущений, которые она может сделать в
чтобы добиться более быстрого исполнения.
Это особенно важно для петель с "дешевыми" телами. Часто это
достаточно векторизовать только самый внутренний цикл, чтобы получить приемлемый
спектакль. Общее правило заключается в том, что «порядок»
векторизованное тело должно быть больше или равно «порядку»
замкнутая петля.
В качестве менее тривиального примера вместо
for i = 1:n-1
a(i) = b(i+1) - b(i);
endfor
запись
a = b(2:n) - b(1:n-1);
Здесь показана важная общая концепция использования массивов для
индексирование вместо циклического перебора по индексной переменной.  Индексные выражения.
Также щедро используйте логическое индексирование. Если условие
необходимо проверить, это условие также может быть записано как логическое значение
индекс. Например, вместо
for i = 1:n
if (a(i) > 5)
a(i) -= 20
endif
endfor
запись
a(a>5) -= 20;
, который использует тот факт, что '> 5' производит логический индекс.
По возможности используйте поэлементные векторные операторы, чтобы избежать зацикливания
(операторы типа '. *' и '. ^').  Арифметические операции. Для простого
встроенные функции, функция векторизации может делать это автоматически.
- Встроенная функция: векторизация (FUN)
Создайте векторизованную версию встроенной функции FUN, заменив
все вхождения '', '/' и т. д., с '. ', './' и т. д.
This may be useful, for example, when using inline functions with
numerical integration or optimization where a vector-valued
function is expected.
fcn = vectorize (inline ("x^2 - 1"))
=> fcn = f(x) = x.^2 - 1
quadv (fcn, 0, 3)
=> 6
See also:  inline,  formula,
 argnames.
Также используйте вещание в этих поэлементных операторах для
избегайте зацикливания и ненужных промежуточных выделений памяти.
 Вещание.
Используйте встроенные и библиотечные функции, если это возможно. Встроенный и
скомпилированные функции очень быстрые. Даже с функцией библиотеки m-файла,
велики шансы, что он уже оптимизирован или будет оптимизирован больше
в будущем выпуске.
Например, даже лучше, чем
a = b(2:n) - b(1:n-1);
есть
a = diff (b);
Большинство функций Octave написаны с аргументами вектора и массива в
разум. Если вы обнаружите, что пишете цикл с очень простой операцией,
Скорее всего, такая функция уже существует. Следующие
функции часто встречаются в векторизованном коде:
Индекс манипуляций
* find
* sub2ind
* ind2sub
* sort
* unique
* lookup
* ifelse / merge
Повтор
* repmat
* repelems
Векторизованная арифметика
* sum
* prod
* cumsum
* cumprod
* sumsq
* diff
* dot
* cummax
* cummin
Форма многомерных массивов
* reshape
* resize
* permute
* squeeze
* deal
Также посмотрите на эти страницы из вики Stanford ML для получения дополнительных рекомендаций с примерами.
http://ufldl.stanford.edu/wiki/index.php/Vectorization
http://ufldl.stanford.edu/wiki/index.php/Logistic_Regression_Vectorization_Example
http://ufldl.stanford.edu/wiki/index.php/Neural_Network_Vectorization