2012-03-27 145 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 

這產生的答案是單列而不是單行矩陣。