【问题标题】:Avoid nested for loops when summing over matrix indices对矩阵索引求和时避免嵌套 for 循环
【发布时间】:2015-04-24 09:34:00
【问题描述】:

我需要做一个相当简单的计算,但我无法弄清楚如何以一种接近高效的方式进行计算。我有一个很大的 nxn 矩阵,我需要计算以下内容:

我在编码方面仍然相当缺乏经验,所以我想到的唯一方法就是做简单的事情并使用 3 个 for 循环来移动索引:

sum=0
for(i in 1:n)
{
    for(j in 1:n)
    {
        for(k in 1:n)
        {
           sum = sum + A[i,j]*A[j,k]
        }
    }
}

不用说,对于任何大小合适的矩阵,这都需要永远运行。我知道必须有更好、更有效的方法来做到这一点,但我想不通。

【问题讨论】:

  • 那太好了,谢谢!
  • @nicola 你为什么不发布你伟大的 cmets?
  • @DavidArenburg tx,完成,我离开了我的电脑。很高兴您能欣赏我的评论。

标签: r performance for-loop


【解决方案1】:

如果你不考虑ki 的和,你可以意识到你只是在做A 的矩阵乘积。 R中的此类产品是通过%*%运算符获得的。计算完这个矩阵后,你只需要将所有元素相加即可:

 sum(A %*% A)

应该给出你想要的结果。

【讨论】:

    猜你喜欢
    • 2012-06-25
    • 2021-06-05
    • 2017-08-27
    • 2017-11-11
    • 1970-01-01
    • 2019-11-21
    • 1970-01-01
    • 2020-05-21
    • 2019-12-26
    相关资源
    最近更新 更多