Main Content

getMatrix

Matrix representation of quantum circuit or gate

Since R2023a

Installation Required: This functionality requires MATLAB Support Package for Quantum Computing.

Description

M = getMatrix(c) returns the unitary matrix representation of a quantum circuit or gate. The size of the matrix is 2n-by-2n, where n is the largest qubit index of the circuit or gate.

example

Examples

collapse all

Construct a simple swap gate that acts on two target qubits with indices 1 and 2.

g = swapGate(1,2);

Get the matrix representation of the swap gate.

M = getMatrix(g)
M =

     1     0     0     0
     0     0     1     0
     0     1     0     0
     0     0     0     1

The rows and columns of this matrix each represent the basis states |00, |01, |10, and |11, respectively. That is, the second column of the matrix represents the swap gate being applied to state |01, which results in state |10. The third column of the matrix represents the swap gate being applied to state |10, which results in state |01. For more information about basis states, see Basis States Definition.

Create a quantum circuit that consists of a Hadamard gate and a controlled X gate to entangle two qubits.

gates = [hGate(1); cxGate(1,2)];
c = quantumCircuit(gates);

Find the matrix representation of the circuit.

M = getMatrix(c)
M =

    0.7071         0    0.7071         0
         0    0.7071         0    0.7071
         0    0.7071         0   -0.7071
    0.7071         0   -0.7071         0

Create an array of inner gates that consists of a Pauli X gate, a Hadamard gate, and a swap gate.

gates = [xGate(1); hGate(2); swapGate(1,2)]
gates = 

  3×1 SimpleGate array with gates:

    Id   Gate   Control   Target
     1   x                1     
     2   h                2     
     3   swap             [1,2] 

Construct a composite gate from the array of inner gates. The composite gate acts on qubits 1 and 3 of the outer circuit containing this gate.

cg = compositeGate(gates,[1 3]);

Get the matrix representation of the composite gate.

M = getMatrix(cg)
M =

         0         0         0         0    0.7071    0.7071         0         0
    0.7071    0.7071         0         0         0         0         0         0
         0         0         0         0         0         0    0.7071    0.7071
         0         0    0.7071    0.7071         0         0         0         0
         0         0         0         0    0.7071   -0.7071         0         0
    0.7071   -0.7071         0         0         0         0         0         0
         0         0         0         0         0         0    0.7071   -0.7071
         0         0    0.7071   -0.7071         0         0         0         0

Input Arguments

collapse all

Quantum circuit or gate, specified as a quantumCircuit, SimpleGate, or CompositeGate object. The size of the returned matrix is 2n-by-2n, where n is the largest qubit index of the quantum circuit or gate.

Limitations

  • Because the size of the matrix that represents a quantum circuit or gate operation scales as 2n-by-2n as the number of qubits n grows, using getMatrix is practical only when n is less than about 15.

More About

collapse all

Basis States Definition

  • For a quantum circuit with n qubits, the overall 2n basis states are constructed from the Kronecker product of the n qubit bases with ordering from left to right for qubits with the lowest index to the highest index. In other words, if the basis of a single qubit with index k is labeled as |qk (which can be |0 or |1), then the basis states of the circuit with n qubits are represented by |q1...|qk...|qn. For example, for a circuit with two qubits, all possible basis states expressed as a column vector are |q1q2=[|00,|01,|10,|11]T. This definition follows most textbooks.

  • The matrix representation of a circuit or gate operates on a quantum state that is represented by the linear combinations of the 2n basis states using the above ordering. For example, consider the controlled X gate that operates on a target qubit (with index 2) based on the state of a control qubit (with index 1). If the control qubit is in the |0 state, this gate does nothing. If the control qubit is in the |1 state, this gate applies the Pauli X gate [0110] to the target qubit. The matrix representation of the controlled X gate is

    [1000010000010010].

Tips

  • To compare if two circuits perform an equivalent operation, you can use getMatrix to get the matrix representations of the circuits. If the two matrices are equal, then the circuits are equivalent.

Version History

Introduced in R2023a