我有2個矩陣。在R中乘以兩個矩陣
第一招: [1,2,3]
,第二個:
[3,1,2
2,1,3
3,2,1]
我正在尋找一種方式來將它們相乘。
結果應該是:[11, 13, 10]
在R,mat1%*%mat2
不起作用。
我有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
這產生的答案是單列而不是單行矩陣。