Comment calculer le produit de Hadamard de vecteurs dans Matlab et Octave
Pour calculer le produit terme à terme des deux de deux vecteurs sur Matlab/Octave nous utilisons l'opérateur .*
v.*w
Les termes v et w sont deux vecteurs de même dimension.
Le résultat est un vecteur v.*w dans lequel chaque coefficient est le produit des éléments des vecteurs v et w qui sont dans la même position.
$$ \vec{v} \cdot \vec{w} = \begin{pmatrix} v_1 \\ v_2 \\ v_3 \\ \vdots \\ v_n \end{pmatrix} \cdot \begin{pmatrix} w_1 \\ w_2 \\ w_3 \\ \vdots \\ w_n \end{pmatrix} = \begin{pmatrix} v_1 \cdot w_1 \\ v_2 \cdot w_2 \\ v_3 \cdot w_3 \\ \vdots \\ v_n \cdot w_n \end{pmatrix} $$
Note. Cette multiplication vectorielle est connue sous le nom de produit d'Hadamard ( Hadamard product ). Il porte le nom du mathématicien français Jacques Hadamard. Il est également connu sous le nom de produit Schur ou element-wise product.
Exemple
Définir un vecteur v
>> v=[1;2;3]
v =
1
2
3
Définir un autre vecteur w avec le même nombre d'éléments
>> w=[4;5;6]
w =
4
5
6
Calculer le produit terme à terme des deux vecteurs
>> v.*w
ans =
4
10
18
Le résultat est un vecteur composé des produits des éléments des deux vecteurs qui sont dans la même position
$$ \vec{v} \cdot \vec{w} = \begin{pmatrix} 1 \\ 2 \\ 3 \end{pmatrix} \cdot \begin{pmatrix} 4 \\ 5 \\ 6 \end{pmatrix} = \begin{pmatrix} 1 \cdot 4 \\ 2 \cdot 5 \\ 3 \cdot 6 \end{pmatrix} = \begin{pmatrix} 4 \\ 10 \\ 18 \end{pmatrix} $$