Question

Est-il possible à Octave pour calculer et stocker que la diagonale d'un produit de la matrice?

En fait, comme faire: vector = diag(A*B);

Je ne se soucient pas de l'une des valeurs de A*B sauf celles sur la diagonale. Les dimensions de la matrice sont autour 80k x 12 et 12 x 80k, même si je me fichais de la vitesse / mémoire supplémentaire, il suffit de coutume en forme dans la RAM.

Etrange, car Octave est un paquet d'énormes ensembles de données et sont très importants diagonales, il devrait donc être possible.

Était-ce utile?

La solution

Le premier élément de la diagonale est le produit scalaire de la première rangée de A avec la première colonne de B. Le deuxième élément de la diagonale est le produit scalaire de la deuxième rangée de A avec la deuxième colonne de B.

En d'autres termes:

vector = sum(A.*B',2);

Autres conseils

Voici comment vous pouvez le faire en Matlab (probablement similaire à la syntaxe Octave):

vector = sum(A.*B',2);

calcule que la diagonale résultant de l'opération A*B comme vecteur de colonne vector.

en fait je pense que c'est le produit scalaire de la première rangée de A avec la première colonne de B ... le deuxième élément diagonale est le produit scalaire de la deuxième ligne et la deuxième colonne .. . etc

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top