众所周知,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
但是,此改进的运行时与原始代码类似。
答案 0 :(得分:4)
试试这个(没有循环):
A = (FA*KS2).'; %'# A is now 25-by-1
S2 = SS2(1,:)*sin(A) + SS2(2,:)*cos(A);