Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Multiplying two matrices in R

Tags:

r

matrix

I have 2 matrices.

The first one: [1,2,3]

and the second one:

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

I'm looking for a way to multiply them.

The result is supposed to be: [11, 13, 10]

In R, mat1%*%mat2 don't work.

like image 927
robert trudel Avatar asked Dec 04 '22 04:12

robert trudel


2 Answers

You need the transpose of the second matrix to get the result you wanted:

> 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

Or potentially quicker (see ?crossprod) if the real problem is larger:

> tcrossprod(v1, v2)
     [,1] [,2] [,3]
[1,]   11   13   10
like image 67
Gavin Simpson Avatar answered Dec 05 '22 16:12

Gavin Simpson


mat1%%mat2 Actuall y works , this gives [ 16 9 11 ] but you want mat1 %% t(mat2). This means transpose of second matrix, then u can get [11 13 10 ]

Rcode:

mat1 = matrix(c(1,2,3),nrow=1,ncol=3,byrow=TRUE)
mat2 = matrix(c(3,1,2,2,1,3,3,2,1), nrow=3,ncol=3,byrow=TRUE)
print(mat1)
print(mat2 )
#matrix Multiplication
print(mat1 %*% mat2 )
# matrix multiply with second matrix with transpose
# Note of using  function t()
print(mat1 %*% t(mat2 ))
like image 20
Pavan Gudipati Avatar answered Dec 05 '22 17:12

Pavan Gudipati