# Matrix product of Hadamard products

Is there a way of expressing the following expression using only matrix products ?

$(A \circ B ) (A \circ B)^H$

$\circ$ is the Hadamard product and $.^H$ is the conjugate-transpose operator.

$A$ and $B$ are matrices in $\mathbb{C}^{m \times n}$.

• The Hadamard product is a principal submatrix of the Kronecker product if that is allowed. – mathreadler Jan 3 '17 at 11:23
• Otherwise you could for example vectorize A and B, make diagonal matrices of them, multiply and express the conjugate-transpose as a matrix operator (will be a permutation matrix). – mathreadler Jan 3 '17 at 11:26
• Thanks, I'll take a look at your second idea and see what I can do. I'll let you know. – Thomas Jan 3 '17 at 12:40
• Yes, and then the only thing left is to find a matrix that does a conjugate transpose on a vector and you can express what you want. You may need to find a suitable matrix representation of complex numbers to do that. – mathreadler Jan 3 '17 at 13:26
• You also have that ${\rm vec}(A \circ B) = {\rm diag}\{{\rm vec}\{A\}\} \cdot {\rm vec}\{B\} = {\rm diag}\{{\rm vec}\{B\}\} \cdot {\rm vec}\{A\}$. The trouble is that you need the matrix product between the Schur products so you'd have to "undo" the vec or diag. That's not that easy to write nicely. Btw: the trace of your expression is more easy to write since ${\rm trace}\{(A \circ B)(A \circ B)^H\} = {\rm vec}\{B\}^H \cdot {\rm diag}\{{\rm vec}\{A\}\} \cdot {\rm diag}\{{\rm vec}\{A\}\}^H \cdot {\rm vec}\{B\}$. – Florian Jan 3 '17 at 13:30

According to the comments the only ugly part was the devectorization.

Consider the 3x3 matrix $${\bf X}=\left[\begin{array}{ccc} 1&2&3\\4&5&6\\7&8&9\end{array}\right]$$

It's lexical vectorization is:

$$\text{vec}({\bf X}) = \left[\begin{array}{ccccccccc}1&4&7&2&5&8&3&6&9\end{array}\right]^T$$

We consider that kind of vectorization here.

The Matlab / Octave expression:

kron([1,0,0]',eye(3))'*kron(R(:),[1,0,0])+
kron([0,1,0]',eye(3))'*kron(R(:),[0,1,0])+
kron([0,0,1]',eye(3))'*kron(R(:),[0,0,1])-R


evaluates to the zero matrix for several random matrices R, each new term "selecting" a new row.

Then a guess would be that $${\bf R}=\sum_k({\bf v_k} \otimes {\bf I})^T(\text{vec}({\bf R})\otimes {\bf v_k}^T)$$ With $\bf v_k$ being the Dirac or selector vector: $$({\bf v_k})_i = \cases{0, k \neq i\\1, k=i}$$

Feel free to try and simplify it if you want.