Los archivos de ayuda que vienen con Octave tienen esta entrada:
19,1 vectorización básico
Para una muy buena primera aproximación, el objetivo de vectorización es código de escritura que evita bucles y utiliza todo el arsenal operaciones.Como un ejemplo trivial , considere
for i = 1:n
for j = 1:m
c(i,j) = a(i,j) + b(i,j);
endfor
endfor
en comparación con el mucho más simple
c = a + b;
Esto no es simplemente más fácil de escribir; también es internamente mucho más fácil optimizar . Octave delega esta operación en una implementación subyacente de que, entre otras optimizaciones, puede usar instrucciones de hardware de vector especial o incluso podría realizar las adiciones en el paralelo . En general, si el código está vectorizado, la implementación subyacente tiene más libertad sobre las suposiciones que puede hacer en para lograr una ejecución más rápida.
Esto es especialmente importante para los bucles con cuerpos "baratos". Con frecuencia es suficiente vectorizar solo el bucle más interno para obtener un rendimiento aceptable. Una regla general es que el "orden" del cuerpo vectorizado debe ser mayor o igual que el "orden" del bucle circundante .
Como un ejemplo menos trivial, en lugar de
for i = 1:n-1
a(i) = b(i+1) - b(i);
endfor
escritura
a = b(2:n) - b(1:n-1);
Esto muestra un importante concepto general sobre el uso de matrices para indexación en lugar de bucle a través de una variable de índice.  Expresiones de índice. También use la indexación booleana generosamente. Si se debe probar una condición , esta condición también se puede escribir como un índice booleano . Por ejemplo, en lugar de
for i = 1:n
if (a(i) > 5)
a(i) -= 20
endif
endfor
escritura
a(a>5) -= 20;
que explota el hecho de que 'a> 5' produce un índice booleano.
Utilice los operadores de vectores con elementos cuando sea posible para evitar el bucle (operadores como '. *' Y '. ^').  Operaciones aritméticas. Para funciones en línea simples , la función 'vectorizar' puede hacer esto automáticamente.
- de las funciones integradas: vectorizar (FUN) Crear una versión vectorizada de la función FUN en línea mediante la sustitución de todas las ocurrencias de '', '/', etc., con'. '' ./', etc.
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.
también explotan la radiodifusión en estos operadores elementwise tanto a evitar bucles y las asignaciones de memoria intermedios innecesarios.
 Radiodifusión.
Utilice funciones integradas y de biblioteca si es posible. Las funciones compiladas incorporadas y son muy rápidas. Incluso con una función de biblioteca de archivos m, es muy probable que ya esté optimizado, o se optimice más en una versión futura.
Por ejemplo, incluso mejor que
a = b(2:n) - b(1:n-1);
es
a = diff (b);
mayoría de las funciones de octava se escriben con el vector y la matriz argumentos en mente. Si se encuentra escribiendo un ciclo con una operación muy simple, es probable que tal función ya exista. Las siguientes funciones se producen con frecuencia en el código vectorizado:
manipulación Índice
* find
* sub2ind
* ind2sub
* sort
* unique
* lookup
* ifelse/merge
Repetición
* repmat
* repelems
aritmética vectorizada
* sum
* prod
* cumsum
* cumprod
* sumsq
* diff
* dot
* cummax
* cummin
Forma de las matrices de dimensiones superiores
* reshape
* resize
* permute
* squeeze
* deal
Busque también en estas páginas de un wiki de Stanford ML para algunos más orientación con ejemplos.
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
¿Puede proporcionar un enlace a la conferencia sobre GLM? – justis
Cortesía de la clase ML del Profesor Andrew Ng en Stanford: http://cs229.stanford.edu/materials.html - el material de Regresión GLM y Softmax se encuentra al final de la Clase 1 – oort