Produto de Hadamard

De Augusto Baffa Wiki
Ir para navegação Ir para pesquisar

O produto de Hadamard (produto termo a termo) é uma operação binária que toma duas matrizes de mesma dimensão e produz outra matriz onde cada elemento i, j é o produto dos elementos i, j das duas matrizes originais. O produto de Hadamard é associativo, distributivo e comutativo (ao contrário do produto comum da matriz).

Definição

Para duas matrizes [math]A[/math], [math]B[/math] da mesma dimensão [math]m \times n[/math], o produto de hadamard [math]A \circ B[/math] é uma matriz da mesma dimensão dos operandos, com elementos dados por

[math](A \circ B)_{i, j} = (A)_{i, j} (B)_{i, j}[/math].

Para matrizes de diferentes dimensões ([math]m \times n[/math] e [math]p \times q[/math], onde [math]m \neq p[/math] ou [math]n \neq q[/math] ou ambos) o produto Hadamard é indefinido.

Exemplo

Por exemplo, o produto de hadamard para uma matriz 3 × 3 A com uma matriz 3 × 3 B é

[math] \left [ \begin{array}{ccc} a_{11} & a_{12} & a_{13} \\\ a_{21} & a_{22} & a_{23} \\\ a_{31} & a_{32} & a_{33} \end{array} \right ] \circ \left [ \begin{array}{ccc} b_{11} & b_{12} & b_{13} \\\ b_{21} & b_{22} & b_{23} \\\ b_{31} & b_{32} & b_{33} \end{array} \right ] = \left [ \begin{array}{ccc} a_{11}b_{11} & a_{12}b_{12} & a_{13}b_{13} \\\ a_{21}b_{21} & a_{22}b_{22} & a_{23}b_{23} \\\ a_{31}b_{31} & a_{32}b_{32} & a_{33}b_{33} \end{array} \right ] [/math].

def HadamardProduct(m1, m2):
   mprod = []		
   for i in range(len(m1)):
      mprod[i] = []
      for j in range(len(m1[i])):
         mprod[i][j] = m1[i][j] * m2[i][j]
   return mprod

Veja Também