Measure qubits
Ang pahinang ito ay hindi pa naisalin. Nakikita mo ang orihinal na bersyon sa Ingles.
Package versions
The code on this page was developed using the following requirements. We recommend using these versions or newer.
qiskit[all]~=2.3.0
qiskit-ibm-runtime~=0.43.1
To get information about a qubit's state, you can measure it onto a classical bit. In Qiskit, measurements are performed in the computational basis, that is, the single-qubit Pauli- basis. Therefore, a measurement yields 0 or 1, depending on the overlap with the Pauli- eigenstates and :
Mid-circuit measurements
Mid-circuit measurements are a key component of dynamic circuits. Prior to qiskit-ibm-runtime v0.43.0, measure was the only measurement instruction in Qiskit. Mid-circuit measurements, however, have different tuning requirements than terminal measurements (measurements that happen at the end of a circuit). For example, you need to consider the instruction duration when tuning a mid-circuit measurement because longer instructions cause noisier circuits. You don't need to consider instruction duration for terminal measurements because there are no instructions after terminal measurements.
In qiskit-ibm-runtime v0.43.0, the MidCircuitMeasure instruction was introduced. As the name suggests, it is a new measurement instruction that is optimized for mid-circuit on IBM® QPUs.
The MidCircuitMeasure instruction maps to the measure_2 instruction reported in the backend's supported_instructions. However, measure_2 is not supported on all backends. Use service.backends(filters=lambda b: "measure_2" in b.supported_instructions) to find backends that support it. New measurements might be added in the future, but this is not guarenteed.
Apply a measurement to a circuit
There are several ways to apply measurements to a circuit:
QuantumCircuit.measure method
Use the measure method to measure a QuantumCircuit.
Examples:
from qiskit import QuantumCircuit
qc = QuantumCircuit(5, 5)
qc.x(0)
qc.x(1)
qc.x(4)
qc.measure(
range(5), range(5)
) # Measures all qubits into the corresponding clbit.
<qiskit.circuit.instructionset.InstructionSet at 0x7fdc54260490>
from qiskit import QuantumCircuit
qc = QuantumCircuit(3, 1)
qc.x([0, 2])
qc.measure(1, 0) # Measure qubit 1 into the classical bit 0.
<qiskit.circuit.instructionset.InstructionSet at 0x7fdc54260820>
Measure class
The Qiskit Measure class measures the specified qubits.
from qiskit.circuit import Measure
qc = QuantumCircuit(3, 1)
qc.x([0, 1])
qc.append(Measure(), [0], [0]) # measure qubit 0 into clbit 0
<qiskit.circuit.instructionset.InstructionSet at 0x7fdc54260df0>
QuantumCircuit.measure_all method
To measure all qubits into the corresponding classical bits, use the measure_all method. By default, this method adds new classical bits in a ClassicalRegister to store these measurements.
from qiskit import QuantumCircuit
qc = QuantumCircuit(3, 1)
qc.x([0, 2])
qc.measure_all() # Measure all qubits.
QuantumCircuit.measure_active method
To measure all qubits that are not idle, use the measure_active method. This method creates a new ClassicalRegister with a size equal to the number of non-idle qubits being measured.
from qiskit import QuantumCircuit
qc = QuantumCircuit(3, 1)
qc.x([0, 2])
qc.measure_active() # Measure qubits that are not idle, that is, qubits 0 and 2.
MidCircuitMeasure method
Use MidCircuitMeasure to apply a mid-circuit measurement (requires qiskit-ibm-runtime v0.43.0 or later). While you can use QuantumCircuit.measure for a mid-circuit measurement, because of its design, MidCircuitMeasure is typically a better choice. For example, it adds less overhead to your circuit than when using QuantumCircuit.measure.
from qiskit import QuantumCircuit
from qiskit_ibm_runtime import QiskitRuntimeService
from qiskit_ibm_runtime.circuit import MidCircuitMeasure
from qiskit.circuit import Measure
service = QiskitRuntimeService()
backend = service.least_busy(operational=True, simulator=False)
circ = QuantumCircuit(2, 2)
circ.x(0)
circ.append(MidCircuitMeasure(), [0], [0])
# circ.measure([0], [0])
# circ.measure_all()
print(circ.draw(cregbundle=False))
┌───┐┌────────────┐
q_0: ┤ X ├┤0 ├
└───┘│ │
q_1: ─────┤ Measure_2 ├
│ │
c_0: ═════╡0 ╞
└────────────┘
c_1: ═══════════════════
- There must be at least one classical register in order to use measurements.
- The Sampler primitive requires circuit measurements. You can add circuit measurements with the Estimator primitive, but they are ignored.
Next steps
Measureclassmeasure_allmethodmeasure_activemethodrandom_circuitmethod