Kronecker products: Reordering $\text{vec}(A) \text{vec}(A)^T$ to $A \otimes A$

73 Views Asked by At

I'm trying to find a more elegant way to reorder the elements of the Kronecker product $\text{vec}(\textbf{A})\text{vec}(\textbf{A})^T$ into those of $\textbf{A} \otimes \textbf{A}$, where $\textbf{A}$ is an $m \times m$ symmetric matrix.

I have a solution that extracts each column of $\text{vec}(\textbf{A})\text{vec}(\textbf{A})^T$, reshapes it using the inverse-$\text{vec}$ operator, and positions the resulting block correctly in a matrix of zeros before summing over all the blocks:

$\textbf{A} \otimes \textbf{A} = \sum_{i=1}^m \sum_{j=1}^m \textbf{e}_i \textbf{e}_j^T \otimes \Big(\text{vec}(\textbf{I})^T \otimes \textbf{I}\Big) \Big(\textbf{I} \otimes \text{vec}(\textbf{A})\text{vec}(\textbf{A})^T (\textbf{e}_i \otimes \textbf{e}_j)\Big)$

where $\textbf{I}$ is the $m \times m$ identity matrix and $\textbf{e}_i$ is the $i$th column of $\textbf{I}$.

I'm now looking for a matrix expression that performs the same reordering, preferably without any summation, but certainly without having to expand and collapse the matrix.