簡體   English   中英

r:如何使矩陣乘法更快(特殊情況)

[英]r: how to make matrix multiplication faster (special case)

我想要一個矩陣d3(mxn),其每一行都是相同的,並且等於維數為n的給定向量(d0)。

我的嘗試如下:

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

我想計算上述兩個矩陣d3的乘積,其中

 d3=d2%*%d1.

這種簡單的矩陣乘法方式非常慢。 在上述特殊情況下如何使乘法更快? 謝謝。

我想要一個矩陣d3(mxn),其每一行都是相同的,並且等於維數為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

這應該是最快的解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM