将嵌套求和转换为R型矩阵乘法

时间:2018-08-24 12:10:05

标签: r nested matrix-multiplication

我正在尝试在R中实现嵌套求和。for循环实现是:

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

其中w是对称方阵,n是行(或列)数。 Please see the formula我正在尝试实施。 (所以不允许我写Latex或在此处添加图片。)

上面的for循环嵌套需要永远的时间。如何以R方式有效地实现这一点?

1 个答案:

答案 0 :(得分:2)

尝试一下:

Sum2 <- sum(w %*% w)

all.equal(Sum, Sum2)
## [1] TRUE

注意

我们用于比较:

# input
set.seed(123)
n <- 5
w <- matrix(rnorm(n^2), n)

# from question
Sum = 0
  for(i in 1:n){
    for(j in 1:n){
      for(k in 1:n){
        Sum = Sum + w[i,j]*w[j,k]
      }
    }
  }