Vectorisation | samuelboudet.com
Vectorisation
Un des principaux inconvénients de Matlab est sa lenteur de calcul. Celle-ci est due au fait que Matlab est un langage interprété, c'est à dire que le code n'est pas compilé. Si vous programmez de la même façon qu’en C/C++ vous vous apercevrez que Matlab peut être 100 fois plus lent. Voici un exemple de code qui est particulièrement lent sous Matlab.
Les fonctions Matlab sont optimisées pour des données de grande dimension. Cependant pour des données de petite dimension le temps d'interprétation du code n'est pas négligeable et par conséquent le programme peut être très lent.

Dans l'exemple précédent Matlab interprète 1000000 fois le code de la fonction carre de la boucle for ce qui prend un temps considérable par rapport au temps nécessaire à l'opération.
Remplacer "t=carre(i);" par "t=i*i;" et vous observerez le temps de calcul diviser par presque 100.

Pour améliorer encore le temps de calcul, il est souvent recommandé d’utiliser la vectorisation. La vectorisation consiste à éviter l’écriture de boucles for en utilisant les opérations matricielles. Par exemple, soit a=1:1000000; écrire :
est plus rapide que
Noter l’utilisation de la commande zeros pour initialiser le tableau. Le programme fonctionnerait sans mais le temps d’exécution serait alors fortement augmenté du fait que la matrice p grandirait à chaque itération.



Last updated : 2nd of August 2012
 
copyrightfrance | Administration