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

How do I efficiently multiply every 2 columns and sum the row

也许我应该使用 for 循环,但我想看看是否有更多 efficient/faster 的方法。

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

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

我会用

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 秒。