简单的代码加速

时间:2011-08-23 16:02:10

标签: performance matlab

众所周知,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 =矩阵2x25

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

但是,此改进的运行时与原始代码类似。

1 个答案:

答案 0 :(得分:4)

试试这个(没有循环):

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