对于所有元素,如何在矩阵中将元素行列与元素列行相乘?

时间:2018-07-31 09:53:28

标签: r matrix

我有一个很大的矩阵,想将元素[a,b]与元素[b,a]相乘,然后彼此重复。

说我有一个矩阵a:

a <- matrix(c(1:9), byrow = TRUE, nrow = 3)

给出矩阵

     [,1] [,2] [,3]
[1,]    1    2    3
[2,]    4    5    6
[3,]    7    8    9
  • 例如,对于元素a[1,1],我将a[1,1]a[1,1]乘以1
  • 下一个元素a[1,2]我将a[1,2]a[2,1]乘以8

对每个元素重复此操作应给出:

     [,1] [,2] [,3]
[1,]    1    8   21
[2,]    8   25   48
[3,]   21   48   81

我使用以下方法计算得出:

b <- matrix(c(a[1,1] * a[1,1], a[1,2] * a[2,1], a[1,3] * a[3,1],
              a[2,1] * a[1,2], a[2,2] * a[2,2], a[2,3] * a[3,2],
              a[3,1] * a[1,3], a[3,2] * a[2,3], a[3,3] * a[3,3]) , 
            byrow = TRUE, nrow = 3)

我的代码非常混乱,无法用于非常大的矩阵。是否有任何代码可以使用循环或任何其他简单方法来做到这一点?

1 个答案:

答案 0 :(得分:3)

您可以将a与它的转置相乘

a * t(a)
#     [,1] [,2] [,3]
#[1,]    1    8   21
#[2,]    8   25   48
#[3,]   21   48   81