如何加快代码执行双重求和

问题描述 投票:0回答:1

我有以下双重总和:

enter image description here

我想在R中写一个代码

下面我介绍我的解决方案。首先,我选择将x,y和z存储为随机数组或矩阵。

m<-5 
n<-7
x<-runif(n) 
y<-matrix(runif(n*m), ncol=m) 
z<-runif(m)

我使用了一个双循环来执行双和。

ans <- 0
for (i in 1:n){
  for (j in 1:m){
    ans <- ans + x[i]*y[i,j]*z[j]
  }
}

我想加速这段代码,删除double for循环。有什么建议?

r
1个回答
4
投票

这只是矩阵的乘法:

t(x) %*% y %*% z

c(t(x) %*% y %*% z)得到一个数字而不是1 x 1矩阵。

© www.soinside.com 2019 - 2024. All rights reserved.