13
$\begingroup$

There is a well known vectorization operator $\mbox{vec}$ in matrix analysis.

I've vectorized my matrix equations, did some transformation of vectorized equations and now I want to get back to the matrix form. Is there special operator for it?

$\endgroup$
6
  • 2
    $\begingroup$ Are you asking if there is a name for it? Because you certainly can define it. $\endgroup$
    – Git Gud
    May 22, 2014 at 16:20
  • 3
    $\begingroup$ The "inverse" of the vectorisation of a matrix is obviously the matrisation of a vector :) $\endgroup$ May 22, 2014 at 16:22
  • 1
    $\begingroup$ One issue to be aware of is that unless $m$ and $n$ are already given, you will not be able to pick a unique matrix such that the given vector is the vectorization of that matrix. For example, the vectorization of $v=[ \begin{matrix} a & b & c & d \end{matrix}]$ is $v^\intercal$, but you wouldn't know if the original matrix was $v, v^\intercal$, or a $2\times 2$ matrix. $\endgroup$
    – Hayden
    May 22, 2014 at 16:24
  • $\begingroup$ However, if $m$ and $n$ are given, then as the wiki article even points out, it is an isomorphism, and thus the inverse clearly exists. $\endgroup$
    – Hayden
    May 22, 2014 at 16:26
  • 3
    $\begingroup$ In the context of numerical software, the names are different: In MATLAB, it's reshape, in R, it's matrix, in Mathematica it's Reshape, in Maple it's convert with the matrix option. $\endgroup$
    – Roland
    May 22, 2014 at 16:27

2 Answers 2

18
$\begingroup$

Adding to the excellent answer by Rodrigo de Azevedo, I would like to point out that there is an explicit formula for the inverse $\operatorname{vec}_{m\times n}^{-1}$, given by $$ \mathbb{R}^{mn}\ni x \mapsto \operatorname{vec}_{m\times n}^{-1}(x) = \big((\operatorname{vec} I_n)^\top \otimes I_m\big)(I_n \otimes x) \in \mathbb{R}^{m\times n}, $$ where $I_n$ denotes the $n\times n$ identity matrix and $\otimes$ denotes the Kronecker product.


The formula above can be verified in the following way:

Let $X\in\mathbb{R}^{m\times n}$ be such that $\operatorname{vec}{X}=x\in\mathbb{R}^{mn}$, and let $X_k$ denote the $k$-th column of $X$. Additionally, let $M=I_n\otimes x \in\mathbb{R}^{mn^2\times n}$ and let $M_k$ denote the $k$-th column of $M$. Finally, we let $e_k\in\mathbb{R}^n$ be the $k$-th column of $I_n$. Note that $M_k=e_k\otimes\operatorname{vec}{X}$.

Recall the identity $\operatorname{vec}(ABC) = (C^\top\otimes A)\operatorname{vec}{B}$, which we shall make heavy use of.

Observing that $\operatorname{vec}(e_k^\top\otimes X)=M_k$, we see that $$ \big((\operatorname{vec} I_n)^\top \otimes I_m\big)M_k = \big((\operatorname{vec} I_n)^\top \otimes I_m\big)\operatorname{vec}(e_k^\top\otimes X) = \operatorname{vec}\big(I_m(e_k^\top\otimes X)\operatorname{vec}{I_n}\big) = \operatorname{vec}\big((e_k^\top\otimes X)\operatorname{vec}{I_n}\big) = \operatorname{vec}\big(\operatorname{vec}(XI_ne_k)\big) = \operatorname{vec}(Xe_k) = X_k, $$ and thus $$ \big((\operatorname{vec} I_n)^\top \otimes I_m\big)M = \big((\operatorname{vec} I_n)^\top \otimes I_m\big) \begin{bmatrix} M_1 & \ldots & M_n \end{bmatrix} = \begin{bmatrix} X_1 & \ldots & X_n \end{bmatrix} = X. $$

$\endgroup$
10
$\begingroup$

The inverse of the vectorization operator

$$\mbox{vec} : \mathbb{R}^{m \times n} \to \mathbb{R}^{mn}$$

is the operator

$$\mbox{vec}^{-1} : \mathbb{R}^{mn} \to \mathbb{R}^{m \times n}$$

such that

  • $\mbox{vec}^{-1} (\mbox{vec} (X)) = X$ for all $X \in \mathbb{R}^{m \times n}$.

  • $\mbox{vec} (\mbox{vec}^{-1} (x)) = x$ for all $x \in \mathbb{R}^{m n}$.

Once a matrix is vectorized, the original dimensions of the matrix are "forgotten". Hence, it would be wise to write the dimensions of the inputs of $\mbox{vec}$ and of the outputs of $\mbox{vec}^{-1}$ in subscripts, e.g., $\mbox{vec}_{m,n}$ and $\mbox{vec}_{m,n}^{-1}$. Note that $\mbox{vec}_{3,2}^{-1}$ is the inverse of $\mbox{vec}_{3,2}$, but not of $\mbox{vec}_{2,3}$.

$\endgroup$

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.