Proof that the Kronecker product is the equivalent of a double matrix multiplication.

linear algebra

Here is my reference.

Quoting:

If [a] $\text{vec}(X)$ is the vector operator that stacks columns of $X$ on top of each other, then:

$$\begin{align}
\text{vec}(D_mXD_n^\top) & = (D_n \otimes D_m) \text{vec}(X)
\end{align}$$

This trick allows unfolding a matrix $X$ into a long $\text{vec}(X),$ treating it like such as it gets mutiplied on the left by the Kronecker product of the two matrices that are supposed to modify $X$ as though they were a single matrix.

But is there an elegant linear algebra proof to this equality, which I see it does work very well on numerical computaions?

Best Answer

Not elegant but a direct proof. Fix some orthonormal $\{e_i\}$ and write $$ X = \sum_{ij} a_{ij} e_{i} e_{j}^*, $$ where $e_{i}e_{j}^*$ is the outer product of the basis elements $e_{i}$ and $e_{j}$. That is $e_{i}e_{j}^*$ is the matrix with a $1$ in the $(i,j)$ element and 0 elsewhere. Write the other matrices in a similar way then you can write $$ AXB^T = \sum_{ijkl} a_{ij} x_{jk} b_{lk} e_{i} e_{l}^*. $$ Note that the $\mathrm{vec}$ operation is linear and it acts on $e_{i}e_{j}^*$ as $\mathrm{vec}(e_{i}e_{j}^*) = e_{i} \otimes e_j$. Therefore, $$ \mathrm{vec}(AXB^T) = \sum_{ijkl} a_{ij} x_{jk} b_{lk} e_{i} \otimes e_{l}. $$

Then we can simply just calculate the RHS also by writing $$ A \otimes B = \sum_{ijkl} a_{ij} b_{kl} e_{i}e_{j}^* \otimes e_{k}e_{l}^* $$ and $$ \mathrm{vec}(X) = \sum_{mn} x_{mn} e_{m} \otimes e_n $$ which gives $$ \sum_{ijkl} a_{ij}b_{kl}x_{jl} e_{i} \otimes e_{k} $$ which is exactly what we had before up to relabelling $k \leftrightarrow l$.

Related Question