toqito.perms.vec

Performs the vec operation on a matrix.

Module Contents

toqito.perms.vec.vec(mat)[source]

Perform the vec operation on a matrix.

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

The function reorders the given matrix into a column vector by stacking the columns of the matrix sequentially.

For instance, for the following matrix:

[

X = begin{pmatrix}

1 & 2 \ 3 & 4

end{pmatrix}

]

it holds that

[

text{vec}(X) = begin{pmatrix} 1 & 3 & 2 & 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

[
E_{a,b}(c,d) = begin{cases}

1 & text{if} (c,d) = (a,b) \ 0 & text{otherwise}

end{cases}

]

for all (c) and (d) and where

[
e_a(b) = begin{cases}

1 & text{if} a = b \ 0 & text{if} a not= b

end{cases}

]

for all (a) and (b).

Examples

Consider the following matrix

[
A = begin{pmatrix}

1 & 2 \ 3 & 4

end{pmatrix}

]

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

[

text{vec}(A) = left[1, 3, 2, 4 right]^{T}.

]

```python exec=”1” source=”above” import numpy as np from toqito.perms import vec

X = np.array([[1, 2], [3, 4]])

print(vec(X)) ```

!!! See Also

[unvec()][toqito.matrix_ops.unvec.unvec]

Parameters:

mat (numpy.ndarray) – The input matrix.

Returns:

The vec representation of the matrix.

Return type:

numpy.ndarray