2012-03-27 142 views
0

我有2个矩阵。在R中乘以两个矩阵

第一招: [1,2,3]

,第二个:

[3,1,2 
2,1,3 
3,2,1] 

我正在寻找一种方式来将它们相乘。

结果应该是:[11, 13, 10]

在R,mat1%*%mat2不起作用。

回答

9

你需要第二矩阵的转置,以获得你想要的结果:

> 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 
0

这很难说这里最好的答案是因为问题中的符号不​​在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 

这产生的答案是单列而不是单行矩阵。