Ускорение работы матрицы - PullRequest
0 голосов
/ 11 июля 2020

У меня есть матрица n на p X и матрица на n M , где n намного меньше p. Я пытаюсь запустить в R следующие l oop

'''
for(j in 1:p){
   coord    = (1+(j-1)*(p-1)):(j*(p-1))
   P1       = diag(x = 1 , nrow = p-1)
   P2       = t(X[,-j])%*%M%*%X[,-j]
   P3       = t(X[,-j])%*%M%*%X[,j]%*%t(X[,j])%*%M%*%X[,-j]/(1-t(X[,j])%*%M%*%X[,j])        
   P4       = t(X[,-j])%*%X[,j]+n*b*(r[coord]-u[coord])      
   v[coord] = (1/(n*b))*(P1-P2+P3)%*%P4
}
'''

, где v, r и u - векторы длины p * (p-1).

Проблема в том, что этот l oop очень медленный. Для n = 50 и p = 7000 каждая итерация занимает 5 секунд. Мне было интересно, знаете ли вы, как ускорить умножение матриц.

...