在R中乘以两个矩阵
问题描述:
我有2个矩阵。在R中乘以两个矩阵
第一招: [1,2,3]
,第二个:
[3,1,2
2,1,3
3,2,1]
我正在寻找一种方式来将它们相乘。
结果应该是:[11, 13, 10]
在R,mat1%*%mat2
不起作用。
答
你需要第二矩阵的转置,以获得你想要的结果:
> v1 <- c(1,2,3)
> v2 <- matrix(c(3,1,2,2,1,3,3,2,1), ncol = 3, byrow = TRUE)
> v1 %*% t(v2)
[,1] [,2] [,3]
[1,] 11 13 10
或可能更快(见?crossprod
)如果真正的问题是更大:
> tcrossprod(v1, v2)
[,1] [,2] [,3]
[1,] 11 13 10
答
这很难说这里最好的答案是因为问题中的符号不在R中,而是在matlab中。很难判断提问者是否想要给出一个向量,一个行矩阵或一个给定混合符号的列矩阵。
这个问题的另一个答案是简单地切换乘法的顺序。
v1 <- c(1,2,3)
v2 <- matrix(c(3,1,2,2,1,3,3,2,1), ncol = 3, byrow = TRUE)
v2 %*% v1
这产生的答案是单列而不是单行矩阵。