Как ускорить код для выполнения двойного суммирования - PullRequest
0 голосов
/ 01 сентября 2018

У меня есть следующее двойное суммирование:

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)

И я использовал двойной цикл for для выполнения двойной суммы.

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

Я бы хотел ускорить этот код, удалив двойной цикл for. Есть предложения?

1 Ответ

0 голосов
/ 01 сентября 2018

Это просто умножение матриц:

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

Выполните c(t(x) %*% y %*% z), чтобы получить число вместо 1 x 1 матрицы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...