【问题标题】:How do I efficiently multiply every 2 columns and sum the row如何有效地将每 2 列相乘并对行求和
【发布时间】:2015-03-05 03:11:46
【问题描述】:

也许我应该只使用 for 循环,但我想看看是否有更有效/更快的方法来做到这一点。

我有一个数字矩阵,比如说 10x10。我想将 1,1 乘以 1,2,然后 1,3 乘以 1,4 等,然后将第 1 行的结果相加。然后移动到下一行并做同样的事情。最终结果将是一个 10 的向量。

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

【问题讨论】:

  • 所以你的意思是你想将列对相乘,然后对所有结果求和?

标签: matlab matrix alternating


【解决方案1】:

我会用

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-26
    • 1970-01-01
    相关资源
    最近更新 更多