【问题标题】:Simple Speed-up of code简单的代码加速
【发布时间】:2011-11-02 02:26:48
【问题描述】:

众所周知,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

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

【问题讨论】:

    标签: performance matlab


    【解决方案1】:

    试试这个(没有循环):

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

    【讨论】:

    • 非常感谢您的快速回答。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-24
    • 1970-01-01
    • 2014-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多