更快地制作以下matlab代码

时间:2013-04-14 18:39:22

标签: matlab

function c foo(a, b)
     for ii = [1 3 4 5]
          c = a(:,ii) +  b(:,ii);
     end
return

有人能解释一下这是做什么的吗?它是否将a的第1列添加到b的第1列,然后是第3,4,5列的相同内容吗?它应该是c+=吗?否则它只是覆盖最后一笔钱。我对matlab不太熟悉,这段代码有什么意义吗?任何人都可以看到任何方法来加快速度吗?

1 个答案:

答案 0 :(得分:2)

如果代码执行了应该执行的操作(是的,它会覆盖以前的结果,并且只返回最后一个结果),最快的方法是:

function c foo(a, b)
         c = a(:,5) + b(:,5)
end

如果它应该添加列并将它们“连接”在一起,可以直接使用索引:

function c foo(a, b)
         ix = [1 3 4 5];
         c  = a(:,ix) + b(:,ix);
end