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}$.

  • 2
    $\begingroup$ The Hadamard product is a principal submatrix of the Kronecker product if that is allowed. $\endgroup$ – mathreadler Jan 3 '17 at 11:23
  • 1
    $\begingroup$ 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). $\endgroup$ – mathreadler Jan 3 '17 at 11:26
  • $\begingroup$ Thanks, I'll take a look at your second idea and see what I can do. I'll let you know. $\endgroup$ – Thomas Jan 3 '17 at 12:40
  • 1
    $\begingroup$ 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. $\endgroup$ – mathreadler Jan 3 '17 at 13:26
  • 1
    $\begingroup$ 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\}$. $\endgroup$ – 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:


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.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.