Файлы справки, которые приходят с октаву иметь эту запись:
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
Можете ли вы дать ссылку на лекции по ГЖС? – justis
Предоставлено классом ML профессора Эндрю Нга в Стэнфорде: http://cs229.stanford.edu/materials.html - материал регрессии GLM и Softmax находится в конце лекции 1 – oort