【发布时间】:2012-11-24 17:57:37
【问题描述】:
我有 3 个矩阵:
A (n by K),
B (L by m) and
C (L by K)
并且想产生第四个矩阵
D (n by m)
有元素
D(i,j) = sum(B[,i,drop=FALSE]%*%A[j,,drop=FALSE] * C)
(注意 B[,i,drop=FALSE]%*%A[j,,drop=FALSE] 是 (L × 1) 矩阵与 (1 × K_ 矩阵的乘积,因此是 ( L by K),就像 C 一样。“sum”对结果矩阵的所有元素求和)
这样做的一种方法是创建一个网格作为 expand.grid(1:n,1:m) 并为每个元素计算 D(.,.)。关于如何在 R 中更快地做到这一点的任何想法?
谢谢!
【问题讨论】:
-
A 和 B 在我看来不太符合。
-
我是否遗漏了什么,或者 B[,i] 是 L 乘 1,A[j,] 是 1 乘 K? (所以产品是 L 乘 K?)
-
请注意,我不是将 A 乘以 B
-
B[,i] 和 A[j,] 是向量。也许你想要 B[,i,drop=FALSE] 和 A[j,,drop=FALSE]。或者使用外积代替矩阵乘法。
-
谢谢,有道理。我编辑帖子。
标签: performance r matrix product