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

有人可以解释这是在做什么吗?是在第 1 列中添加第 1ab,然后在第 3、4、5 列中添加相同的内容吗?应该是c+=吗?否则它只是覆盖最后的总和。我对matlab不太熟悉,这段代码有意义吗?任何人都可以看到任何使这更快的方法吗?

4

1 回答 1

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
于 2013-04-14T18:49:56.057 回答