【问题标题】:Can I change the byte ordering from little endian to big endian in qiskit?我可以在 qiskit 中将字节顺序从小端更改为大端吗?
【发布时间】:2021-01-21 18:24:10
【问题描述】:

在文献中发现的 CNOT 门的正则矩阵表示是:

CNOT =

      \begin{bmatrix}
      
      1 & 0 &  0 & 0\\
      0 & 1 &  0 & 0\\
      0 & 0 &  0 & 1\\
      0 & 0 &  1 & 0
      
      \end{bmatrix} 
      

但是在 Qiskit 中,矩阵表示为 CNOT =

      \begin{bmatrix}

      1  & 0 &  0 &  0\\
      0  & 0 &  0 &  1\\
      0  & 0 &  1 &  0\\
      0  & 1 &  0 &  0

      \end{bmatrix}

这与大端/小端问题有关吗?有没有办法像文献中恢复的那样来表示我的矩阵?

【问题讨论】:

    标签: endianness qiskit


    【解决方案1】:

    是的,正如您提到的,这与 Qiskit 中的小端位序有关。大多数教科书(以及您展示的第一个矩阵)都是大端顺序。

    如果您想了解更多信息,可以查看这些帖子/文档:

    如果您想将 Qiskit 电路转换为大端,您可以使用 reverse_bits 方法:

    from qiskit import QuantumCircuit
    from qiskit.quantum_info import Operator
    
    circuit = QuantumCircuit(2)
    circuit.cx(0, 1)
    
    print('Little endian:')
    print(Operator(circuit))
    
    print('Big endian:')
    print(Operator(circuit.reverse_bits()))
    

    给予:

    Little endian:
    Operator([[1.+0.j, 0.+0.j, 0.+0.j, 0.+0.j],
              [0.+0.j, 0.+0.j, 0.+0.j, 1.+0.j],
              [0.+0.j, 0.+0.j, 1.+0.j, 0.+0.j],
              [0.+0.j, 1.+0.j, 0.+0.j, 0.+0.j]],
             input_dims=(2, 2), output_dims=(2, 2))
    Big endian:
    Operator([[1.+0.j, 0.+0.j, 0.+0.j, 0.+0.j],
              [0.+0.j, 1.+0.j, 0.+0.j, 0.+0.j],
              [0.+0.j, 0.+0.j, 0.+0.j, 1.+0.j],
              [0.+0.j, 0.+0.j, 1.+0.j, 0.+0.j]],
             input_dims=(2, 2), output_dims=(2, 2))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-07-16
      • 2013-01-27
      • 2020-02-02
      • 2010-12-24
      • 1970-01-01
      • 2013-12-30
      • 2020-11-05
      相关资源
      最近更新 更多