R:逐列乘以2个矩阵以创建第三个矩阵

时间:2014-03-09 05:40:47

标签: r matrix

我有2个矩阵,比如说M和N的大小分别是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 Loops轻松创建这个新矩阵。但是有更简单/更快的方法吗?

1 个答案:

答案 0 :(得分:3)

两个向量的元素乘积之和称为内积。

矩阵乘法给出第一个矩阵中行的内积和第二个矩阵中的列。要获得两个矩阵的列的内积,您可以转置第一个矩阵(将行转换为列),然后使用矩阵乘法来获得所需的结果:

> t(M) %*% N
     [,1] [,2]
[1,]  220  260
[2,]  564  668
[3,]  908 1076
[4,] 1252 1484