|
|
(One intermediate revision by one other user not shown) |
Line 1: |
Line 1: |
| In [[mathematics]], especially in [[linear algebra]] and [[Matrix (mathematics)|matrix theory]], the '''vectorization''' of a [[matrix (mathematics)|matrix]] is a [[linear transformation]] which converts the matrix into a [[column vector]]. Specifically, the vectorization of an ''m×n'' matrix ''A'', denoted by vec(''A''), is the ''mn × 1'' column vector obtained by stacking the columns of the matrix ''A'' on top of one another:
| | The author is called Irwin. Hiring is her day job now but she's always needed her own business. Minnesota has always been his house but his spouse wants them to transfer. Body developing is what my family and I appreciate.<br><br>Also visit my web-site std home test ([http://www.karachicattleexpo.com/blog/56 click to find out more]) |
| | |
| :<math>\mathrm{vec}(A) = [a_{1,1}, ..., a_{m,1}, a_{1,2}, ..., a_{m,2}, ..., a_{1,n}, ..., a_{m,n}]^T</math>
| |
| Here <math>a_{i,j}</math> represents the <math>(i,j)</math>-th element of matrix <math>A</math> and the superscript <math>^T</math> denotes the [[transpose]]. Vectorization expresses the [[isomorphism]] <math>\mathbf{R}^{m \times n} := \mathbf{R}^m \otimes \mathbf{R}^n \cong \mathbf{R}^{mn}</math> between these vector spaces (of matrices and vectors) in coordinates.
| |
| | |
| For example, for the 2×2 matrix <math>A</math> = <math>\begin{bmatrix} a & b \\ c & d \end{bmatrix}</math>, the vectorization is <math>\mathrm{vec}(A) = \begin{bmatrix} a \\ c \\ b \\ d \end{bmatrix}</math>.
| |
| | |
| ==Compatibility with Kronecker products==
| |
| | |
| The vectorization is frequently used together with the [[Kronecker product]] to express [[matrix multiplication]] as a linear transformation on matrices. In particular,
| |
| :<math> \mbox{vec}(ABC)=(C^{T}\otimes A)\mbox{vec}(B) </math>
| |
| | |
| for matrices ''A'', ''B'', and ''C'' of dimensions ''k×l'', ''l×m'', and ''m×n''. For example, if <math> \mbox{ad}_A(X) = AX-XA</math> (the [[adjoint endomorphism]] of the [[Lie algebra]] gl(''n'','''C''') of all ''n×n'' matrices with [[complex number|complex]] entries), then <math>\mbox{vec}(\mbox{ad}_A(X)) = (I_n\otimes A - A^T \otimes I_n ) \mbox{vec}(X)</math>, where <math>I_n</math> is the ''n×n'' [[identity matrix]].
| |
| | |
| There are two other useful formulations:
| |
| | |
| :<math> \mbox{vec}(ABC)=(I_n\otimes AB)\mbox{vec}(C) =(C^{T}B^{T}\otimes I_k)\mbox{vec}(A)</math>
| |
| | |
| :<math> \mbox{vec}(AB)=(I_m\otimes A)\mbox{vec}(B) =(B^{T}\otimes I_k)\mbox{vec}(A)</math>
| |
| | |
| ==Compatibility with Hadamard products==
| |
| | |
| Vectorization is an [[algebra homomorphism]] from the space of ''n×n'' matrices with the [[Hadamard product (matrices)|Hadamard]] (entrywise) product to '''C'''<sup>n</sup> with its [[Hadamard product]]{{dn|date=July 2013}}:
| |
| | |
| :vec(''A'' <math>\circ</math> ''B'') = vec(''A'') <math>\circ</math> vec(''B'').
| |
| | |
| ==Compatibility with inner products==
| |
| | |
| Vectorization is a [[unitary transformation]] from the space of ''n×n'' matrices with the [[Matrix norm#Frobenius norm|Frobenius]] (or [[Hilbert-Schmidt operator|Hilbert-Schmidt]]) [[inner product]] to '''C'''<sup>n</sup> :
| |
| | |
| :tr(''A''<sup>*</sup> ''B'') = vec(''A'')<sup>*</sup> vec(''B'')
| |
| | |
| where the superscript <sup>*</sup> denotes the [[conjugate transpose]].
| |
| | |
| ==Half-vectorization==
| |
| | |
| For a [[symmetric matrix]] ''A'', the vector vec(''A'') contains more information than is strictly necessary, since the matrix is completely determined by the symmetry together with the [[lower triangular matrix|lower triangular]] portion, that is, the ''n''(''n''+1)/2 entries on and below the [[main diagonal]]. For such matrices, the '''half-vectorization''' is sometimes more useful than the vectorization. The half-vectorization, vech(''A''), of a symmetric ''n×n'' matrix ''A'' is the ''n''(''n''+1)/2 × 1 column vector obtained by vectorizing only the lower triangular part of ''A'':
| |
| :vech(''A'') = [ ''A''<sub>1,1</sub>, ..., ''A''<sub>n,1</sub>, ''A''<sub>2,2</sub>, ..., ''A''<sub>n,2</sub>, ..., ''A''<sub>n-1,n-1</sub>,''A''<sub>n-1,n</sub>, ''A''<sub>n,n</sub> ]<sup>T</sup>.
| |
| | |
| For example, for the 2×2 matrix ''A'' = <math>\begin{bmatrix} a & b \\ b & d \end{bmatrix}</math>, the half-vectorization is vech(''A'') = <math>\begin{bmatrix} a \\ b \\ d \end{bmatrix}</math>.
| |
| | |
| There exist unique matrices transforming the half-vectorization of a matrix to its vectorization and vice-versa called, respectively, the [[duplication matrix]] and the [[elimination matrix]].
| |
| | |
| ==Programming language==
| |
| Programming languages that implement matrices may have easy means for vectorization.
| |
| In [[Matlab]]/[[GNU Octave]] a matrix <code>A</code> can be vectorized by <code>A(:)</code>.
| |
| In [[Python (programming language)|Python]] [[NumPy]] arrays implement the 'flatten' method (although this stacks the ''rows'' of the matrix, not the columns), while in [[R programming language|R]] the desired effect can be achieved via the 'c()' or 'as.vector()' functions.
| |
| | |
| ==See also==
| |
| * [[Voigt notation]]
| |
| * [[Row-major order|Column-major order]]
| |
| * [[Matricization]]
| |
| | |
| ==References==
| |
| *Jan R. Magnus and Heinz Neudecker (1999), ''Matrix Differential Calculus with Applications in Statistics and Econometrics'', 2nd Ed., Wiley. ISBN 0-471-98633-X.
| |
| *Jan R. Magnus (1988), ''Linear Structures'', Oxford University Press. ISBN 0-85264-299-7.
| |
| | |
| [[Category:Linear algebra]]
| |
| [[Category:Matrices]]
| |
The author is called Irwin. Hiring is her day job now but she's always needed her own business. Minnesota has always been his house but his spouse wants them to transfer. Body developing is what my family and I appreciate.
Also visit my web-site std home test (click to find out more)