[英]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.