2017-09-14 180 views
0

我想知道如何使用点积。R中的矩阵点积

b = matrix(1:70, ncol=7) 
g= matrix(1:48, ncol=6) 
resulta = matrix(0,6,7) 
for (c in 1:ncol(b)){ 
    for (i in 1:ncol(g)){ 
    resulta[i,c] <- sum((g[,i]) * (b[,c])) 
    } 
} 

警告消息:

1: In (g[, i]) * (b[, c]) : 
    longer object length is not a multiple of shorter object length 
2: In (g[, i]) * (b[, c]) : 
    longer object length is not a multiple of shorter object length 

...........................共计42个一样消息

+0

先生,您要乘以不同尺寸''10x7' 8x6' metrices。在每个循环中有10个元素的向量乘以8个元素的向量。此外,要正确地做到这一点,应该使用矩阵乘法运算符而不是循环'%*%'。希望这将有助于http://my.ilstu.edu/~wjschne/442/MatrixAlgebraInR.html#(1) – Gonzo

回答

1

无论何时您矩阵相乘,您必须确保尺寸是这样的 - 第一个矩阵的#列与第二个#rows相同,即如果第一个矩阵是a x b,第二个矩阵必须是b x c(c和a可以或不可以相等),以便得到的矩阵是a x c

在你的情况下,矩阵b是70 x 7这意味着矩阵g应该是一个7 x something矩阵。换句话说,矩阵g应该有7行。

一旦你有固定的尺寸,试试这个快速矩阵乘法:
resulta <- b %*% g
resulta