L'objectif de la vectorisation consiste à éviter d'avoir des boucles dans le programme en les remlaçant par des opérations matricielles. Comme premier exemple, la vectorisation consistera à remplacer
for i = 1:n for j = 1:m c(i,j) = a(i,j) + b(i,j); end endpar
c = a + b;L'avantage n'est pas seulement de simplifier les lignes de commandes mais surtout de les optimiser.
Un autre exemple de vectorisation consiste à écrire
a = b(2:n) - b(1:n-1);plutôt que
for i = 1:n-1 a(i) = b(i+1) - b(i); endCet exemple illustre un principe général de programmation en matlab/octave qui est d'utiliser les indices des variables plutôt que des boucles.
De manière analogue, lorsqu'une condition est testée pour chaque indice d'une matrice, on aura recours à une matrice de booléens plutôt qu'à des boucles sur les indices de la matrice. Par exemple, on remplacera
for i = 1:n if a(i) > 5 a(i) -= 20 end endpar
a(a>5) -= 20;qui s'appuie sur la matrice booléenne a>5.
L'utilisation d'opérations pointées .*, .^ permet aussi d'éviter les boucles et accélère les temps de calcul.
Les fonctions précompilées matlab sont très rapides et les fonctions .m de toolboxes sont en général optimisées ou en cours de le devenir. Il est donc préférable d'utiliser cette fonction lorsqu'elle propose une alternative à une boucle, comme dans l'exemple suivant :
Plutôt que
a = b(2:n) - b(1:n-1);on peut utiliser
a = diff (b);