matrix_ops.vec

Vec operation.

Module Contents

Functions

vec(mat)

Perform the vec operation on a matrix.

matrix_ops.vec.vec(mat)

Perform the vec operation on a matrix.

For more info, see Section: The Operator-Vector Correspondence from [1].

Stacks the rows of the matrix on top of each other to obtain the “vec” representation of the matrix.

The vec function is a linear mapping that in essence converts each row to column, and then continually stacks the columns on top of each other. An example is helpful.

For instance, for the following matrix:

\[\begin{split}X = \begin{pmatrix} 1 & 2 \\ 3 & 4 \end{pmatrix}\end{split}\]

it holds that

\[\text{vec}(X) = \begin{pmatrix} 1 & 2 & 3 & 4 \end{pmatrix}^T\]

More formally, the vec operation is defined by

\[\text{vec}(E_{a,b}) = e_a \otimes e_b\]

for all \(a\) and \(b\) where

\[\begin{split}E_{a,b}(c,d) = \begin{cases} 1 & \text{if} \ (c,d) = (a,b) \\ 0 & \text{otherwise} \end{cases}\end{split}\]

for all \(c\) and \(d\) and where

\[\begin{split}e_a(b) = \begin{cases} 1 & \text{if} \ a = b \\ 0 & \text{if} \ a \not= b \end{cases}\end{split}\]

for all \(a\) and \(b\).

Examples

Consider the following matrix

\[\begin{split}A = \begin{pmatrix} 1 & 2 \\ 3 & 4 \end{pmatrix}\end{split}\]

Performing the \(\text{vec}\) operation on \(A\) yields

\[\text{vec}(A) = \left[1, 2, 3, 4 \right]^{T}.\]
>>> from toqito.matrix_ops import vec
>>> import numpy as np
>>> X = np.array([[1, 2], [3, 4]])
>>> vec(X)
array([[1],
       [3],
       [2],
       [4]])

See also

unvec

References

[1]

John Watrous. The Theory of Quantum Information. Cambridge University Press, 2018. doi:10.1017/9781316848142.

Parameters:

mat (numpy.ndarray) – The input matrix.

Returns:

The vec representation of the matrix.

Return type:

numpy.ndarray