2017-09-14 2 views
0

Je suis tring pour comprendre comment le produit scalaire.Matrix dot-produit dans 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])) 
    } 
} 

Les messages d'avertissement:

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 

........................... au total 42 messages semblables

+0

Monsieur, vous essayez de multiplier metrices avec différentes dimensions '' 10x7' 8x6'. Il y a un vecteur de 10 éléments à 8 éléments dans chaque boucle. En outre, pour le faire correctement, il faut utiliser l'opérateur de multiplication matriciel au lieu de la boucle '% *%'. J'espère que cela aidera http://my.ilstu.edu/~wjschne/442/MatrixAlgebraInR.html#(1) – Gonzo

Répondre

1

Chaque fois que vous multipliez des matrices, vous devez vous assurer que les dimensions sont telles que #columns de la première matrice est identique à #rows of second, ie si la première matrice est , la seconde matrice doit être b x c (c et a peut ou non être égal) de sorte que la matrice résultante soit a x c.

Dans votre cas, la matrice b est 70 x 7, ce qui signifie que la matrice g doit être une matrice 7 x something. En d'autres termes, la matrice g devrait avoir exactement 7 lignes.

Une fois que vous avez fixé les dimensions, essayez ceci pour la multiplication rapide de la matrice:
resulta <- b %*% g
resulta