matrix#

Implements the semantic category Matrix.

In this category, a box with domain PRO(n) and codomain PRO(m) represents an \(n \times m\) matrix. The >> and << operations correspond to matrix multiplication and @ operation corresponds to the direct sum of matrices:

\[\begin{split}\mathbf{A} \oplus \mathbf{B} = \begin{pmatrix} \mathbf{A} & 0 \\ 0 & \mathbf{B} \end{pmatrix}\end{split}\]

Example

>>> x = Matrix(PRO(2), PRO(1), [2, 4])
>>> x.array
array([[2],
       [4]])
>>> x @ x
Matrix(dom=PRO(4), cod=PRO(2), array=[2, 0, 4, 0, 0, 2, 0, 4])
>>> (x @ x).array
array([[2, 0],
       [4, 0],
       [0, 2],
       [0, 4]])

Matrix can be used to evaluate optics.Diagram s from quantum.optics.

discopy.matrix.Matrix(dom, cod, array)

Implements a matrix with dom, cod and numpy array.