Matlab est un langage matriciel interprété! Pour utiliser efficacement Matlab, il faut donc utiliser en priorité les notations matricielles et remplacer les boucles par des produits tensoriels. Cela évite l'interprétation des boucles (qui peut être très lent sous Matlab).
Dans l'exemple suivant, on se propose de calculer la matrice de Vandermonde :
L'approche classique (identique à la programmation en C) est donnée dans le programme ci-dessous:
% premiere version t=[0:1:200]; n=100; cpu0=cputime; m=size(t,2); for i=1:m for j=1:n+1 A(i,j)=t(i)^(j-1); end end; cputime-cpu0
Cette version s'exécute en 1.7 s CPU sur un ordinateur de bureau:
>>vandermonde1
La version optimisée utilise les produits tensoriels pour éliminer les boucles explicites.
% version matricielle optimisée t=[0:1:200]; n=100; cpu0=cputime; m=size(t,2); A=ones(m,n+1); for i=1:n A(:,i+1)=A(:,i).*t'; end; cputime-cpu0
Cette nouvelle version est 56 fois plus rapide !
>>vandermonde2