Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #1
    Membre régulier
    produit scalaire de tableau de vecteurs a 3 dimensions
    Bonjour
    Pour effectuer le produit scalaire de 2 vecteurs A = (a1, a2, a3) et B = (b1, b2, b3) il suffit de faire l’opération suivante:
    A.B = A*B' = a1*b1 + a2*b2 + a3*b3.
    Maintenant supposons que l'on ait A et B deux tableau de vecteurs:
    A =
    a11 a12 a13
    a21 a22 a23
    a31 a32 a33
    ...
    an1 an2 an3

    B =
    b11 b12 b13
    b21 b22 b23
    b31 b32 b33
    ...
    bn1 bn2 bn3

    Je souhaite trouver la formule (magique!?!) qui me donnerait le produit scalaire entre les lignes de A et B (soit an*bn') sans avoir recours a une boucle du style:
    for j=1:n
    AdotB(j) = A(j, : )*B(j, : )'
    end

    En fait je voudrais récupérer la diagonale de la matrice A*B' dans un vecteur de dimension nx1 mais mon 'n' est tellement grand que ça prend un temps fou le produit des matrices avec en plus un risque de faire déborder la mémoire.

    Merci

  2. #2
    Membre régulier
    Ce n'est peut-être pas la solution la plus esthétique mais elle fonctionne:

    A(:,1).*B(:,1)+A(:,2).*B(:,2)+A(:,3).*B(:,3)

###raw>template_hook.ano_emploi###