我有一个很大的矩阵,想将元素[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)
我的代码非常混乱,无法用于非常大的矩阵。是否有任何代码可以使用循环或任何其他简单方法来做到这一点?
答案 0 :(得分:3)
您可以将a
与它的转置相乘
a * t(a)
# [,1] [,2] [,3]
#[1,] 1 8 21
#[2,] 8 25 48
#[3,] 21 48 81