2011-08-23 104 views
2

據瞭解,MATLAB在for循環中運行速度慢。我試圖矢量化下面的代碼,但沒有成功。也許我對實現有誤。代碼的簡單加速

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 

其中: FA =矩陣的1x8

KS2 =矩陣8X25

SS2 =矩陣2×25

A =標量

S2 =標量

我嘗試以這種方式改進它:

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 

但是,此改進的運行時間與原始代碼類似。

回答

4

試試這個(沒有循環):

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

非常感謝你爲你的快速答覆。 – julian