r:如何使矩阵乘法更快(特殊情况)

时间:2016-10-18 02:51:27

标签: r

我希望有一个矩阵d3(m x n),其每一行相同且等于给定的向量(d0),其大小为n。

我的尝试如下: 让

 m=1000
 n=20000
 d0=runif(n)
 d1=diag(d0)
 d2=array(1,dim=c(m,n)).

我想计算上述两个矩阵的乘积,d3,其中

 d3=d2%*%d1.

这种直接的矩阵乘法方法非常慢。如何在上述特殊情况下更快地进行乘法?感谢。

1 个答案:

答案 0 :(得分:2)

  

我想要一个矩阵d3(m x n),每行都是相同的   等于具有维数n的给定向量(d0)。

使用matrix函数和向量回收这一点很简单。

m=4
n=5
set.seed(42)
d0=runif(n)
matrix(d0, nrow = m, ncol = n, byrow = TRUE)
#         [,1]      [,2]      [,3]      [,4]      [,5]
#[1,] 0.914806 0.9370754 0.2861395 0.8304476 0.6417455
#[2,] 0.914806 0.9370754 0.2861395 0.8304476 0.6417455
#[3,] 0.914806 0.9370754 0.2861395 0.8304476 0.6417455
#[4,] 0.914806 0.9370754 0.2861395 0.8304476 0.6417455

这应该是最快的解决方案。