2012-03-27 19 views
0

2つの行列があります。2つの行列を掛けるR

最初の1: [1,2,3]

と第二1:

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

私はそれらを乗算する方法を探しています。結果があることを想定している

:Rで[11, 13, 10]

mat1%*%mat2は動作しません。

答えて

9

あなたが望んでいた結果を得るために第2の行列の転置を必要とする:本当の問題が大きい場合

> 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にあります。質問者がベクトル、1行行列、または1つの列行列に複数の表記法を与えたい場合は、質問するのが難しいです。

この質問に対する別の回答は、単純に乗算の順序を変更することです。

v1 <- c(1,2,3) 
v2 <- matrix(c(3,1,2,2,1,3,3,2,1), ncol = 3, byrow = TRUE) 
v2 %*% v1 

これは、1つの行行列ではなく1つの列の回答を生成します。

関連する問題