【发布时间】:2014-03-09 05:40:46
【问题描述】:
我有 2 个矩阵,分别是大小为 m x n 和 m x l 的 M 和 N。我想创建一个大小为 l × n 的第三个矩阵,使得新矩阵的第 (i,j) 个条目是通过将 M 的第 i 列与 N 的第 j 列相乘获得的向量的总和.
例如:
M = matrix(1:16, 4,4)
> M
[,1] [,2] [,3] [,4]
[1,] 1 5 9 13
[2,] 2 6 10 14
[3,] 3 7 11 15
[4,] 4 8 12 16
N = matrix(20:27,4,2)
> N
[,1] [,2]
[1,] 20 24
[2,] 21 25
[3,] 22 26
[4,] 23 27
所以,我的新矩阵的第 (1,1) 个元素是 M 中的第一列乘以 N 中的第一列的总和。在这种情况下
> M[,1] * N[,1]
[1] 20 42 66 92
> sum(M[,1] * N[,1])
[1] 220
我可以通过迭代所有可能的 l 和 n 值,使用 2 个 For 循环轻松创建这个新矩阵。但是有没有更简单/更快的方法呢?
【问题讨论】: