如何有效地乘以每2列并对行求和

时间:2015-03-05 03:11:46

标签: matlab matrix alternating

也许我应该选择for循环,但我想看看是否有更高效/更快的方法。

我有一个数字矩阵,让我们说10x10。我想将1,1乘以1,2,然后将1,3乘以1,4等,然后对第1行求和。然后移动到下一行并执行相同的操作。最终结果将是10的向量。

这个矩阵有可能是1000x1000,所以我希望它尽可能快。谢谢!

1 个答案:

答案 0 :(得分:4)

我会用

v = sum(M(:,1:2:end-1).*M(:,2:2:end),2);

这里M(:,1:2:end-1).*M(:,2:2:end)进行乘法运算:M的奇数列的每个元素乘以右边的邻居。 (这假定列数为偶数,否则您描述的过程定义不明确。)然后每行都由sum命令加起来。

在我的计算机上,为1000 x 1000矩阵执行此操作需要0.04秒。