2017-09-14 1 views
0

도트 제품에 대해 알아보기 쉽습니다.매트릭스 도트 제품 in 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

행렬을 곱할 때마다 첫 번째 행렬의 # 열이 두 번째 행과 동일하다는 것을 확인해야합니다. 즉, 첫 행렬이 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