toqito.perms.vec ================ .. py:module:: toqito.perms.vec .. autoapi-nested-parse:: Performs the vec operation on a matrix. Module Contents --------------- .. py:function:: vec(mat) 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\). .. rubric:: 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] :param mat: The input matrix. :returns: The vec representation of the matrix.