2011-08-23 5 views
2

Il est connu que MATLAB fonctionne lentement avec pour boucle. J'ai essayé de vectoriser le code suivant sans succès. Peut-être que j'ai tort avec la mise en œuvre.Simple Accélération du code

for I = NS2:-1:1 
     A = 0; 
     for J=1:8 
      A = A + KS2(J,I)*FA(J); 
     end 
     S2 = S2 + (SS2(1,I)*sin(A) + SS2(2,I)*cos(A)); 
     end 

où: FA = matrice 1x8

KS2 = matrice 8x25

SS2 = matrice 2x25

A = scalaire

S2 = scalaire

I essayer pour l'améliorer de cette façon:

A = 0; 
J = 1:8; 
for I = NS2:-1:1 

A = FA(1,J)*KS2(J,I); 

S2 = S2 + (SS2(1,I)*sin(A) + SS2(2,I)*cos(A)); 
end 

Toutefois, l'exécution de cette amélioration est similaire au code d'origine.

Répondre

4

Essayez plutôt (pas de boucles):

A = (FA*KS2).'; %'# A is now 25-by-1 
S2 = SS2(1,:)*sin(A) + SS2(2,:)*cos(A); 
+0

Merci beaucoup pour votre réponse rapide. – julian