Main Content

quantumCircuit

量子計算回路

R2023a 以降

インストールが必要: この機能には、MATLAB Support Package for Quantum Computing が必要です。

説明

quantumCircuit オブジェクトは、特定の数の量子ビットとゲートをもつ量子計算回路を表します。2 つの量子ビットと 2 つのゲートをもつ量子回路の例を次の図に示します。

Quantum circuit with Hadamard and CNOT gates

この図の水平な各実線が量子ビットを表します。シンボルの Hadamard gate symbolControlled X gate symbol は、量子ビットに作用するゲートを表します。これらのシンボルは、アダマール ゲートと制御 X ゲートをそれぞれ表しています。量子回路の詳細については、Quantum Circuitを参照してください。

作成

説明

c = quantumCircuit(numQubits) は、指定された数の量子ビットを使用して、ゲートがない量子計算回路を作成します。

この構文は、NumQubitsプロパティを numQubits に設定します。

c = quantumCircuit(gates) は、指定された量子ゲートを使用して、そのゲートの作用に必要な数の量子ビットをもつ量子計算回路を作成します。

この構文は、Gatesプロパティを gates に設定し、NumQubitsプロパティを自動的に作成される量子ビットの数に設定します。

c = quantumCircuit(gates,numQubits) は、指定された量子ゲートと指定された数の量子ビットを使用して量子計算回路を作成します。入力 numQubits は、gates で使用される量子ビットの最大インデックス以上でなければなりません。

c = quantumCircuit(___,Name=name) は、前述の構文の任意の入力引数の組み合わせを使用して、回路の名前を追加で指定します。

この構文は、Nameプロパティを name に設定します。

入力引数

すべて展開する

量子回路の名前。string として指定します。name の入力は、英字で始まり、その後に英字、数字、またはアンダースコアが続くもの (空白なし) でなければなりません。既定は空の string "" です。

この名前は、関数 compositeGate を使用して既存の回路から複合ゲートを作成する場合に複合ゲートのラベルとしても使用されます (compositeGate の使用時に新しい名前を指定した場合は除く)。複合ゲートのプロットや生成される QASM コード内の関数名でこの名前が使用されます。

例: "multi_controlled_Z"

プロパティ

すべて展開する

回路内の量子ビットの数。非負の整数スカラーとして指定します。

例: 4

回路内の量子ゲート。ゲートのベクトルとして指定します。ゲートの配列は常に列ベクトルとして返されます。このベクトルの要素の型は quantum.gate.SimpleGate または quantum.gate.CompositeGate でなければなりません。

複数のゲートをもつ量子回路を作成するときは、gates をゲートの行ベクトルまたは列ベクトルとして指定できます。ただし、Gates プロパティは常にゲートの列ベクトルを返します。

回路の名前。string スカラーまたは文字ベクトルとして指定します。このプロパティは string スカラーを返します。回路の作成時に回路名を指定しない場合、このプロパティの既定値は空の string "" です。それ以外の場合、Name プロパティの値は、英字で始まり、その後に英字、数字、またはアンダースコアが続くもの (空白なし) でなければなりません。

この名前は、関数 compositeGate を使用して既存の回路から複合ゲートを構成する場合に複合ゲートのラベルとして使用されます (compositeGate の使用時に新しい名前を指定した場合は除く)。また、複合ゲートのプロットや生成される QASM コード内の関数名でもこの名前が使用されます。

例: "multi_controlled_Z"

オブジェクト関数

plotPlot quantum circuit or composite gate
simulateSimulate quantum circuit
runRun circuit on quantum device
getMatrixMatrix representation of quantum circuit or gate
invInverse of quantum circuit or gate
generateQASMQASM コードを生成
unpackUnpack composite gates in quantum circuit

すべて折りたたむ

アダマール ゲートと制御 X ゲートで構成される、2 つの量子ビットをもつれさせる量子回路を作成します。

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

回路をプロットします。

plot(c)

Quantum circuit with Hadamard and CNOT gates

アダマール ゲートと制御 NOT ゲートで構成される、2 つの量子ビットをもつれさせる量子回路を作成します。回路に "bell" という名前を付けます。

innerGates = [hGate(1); cxGate(1,2)];
innerCircuit = quantumCircuit(innerGates,Name="bell")
innerCircuit = 

  quantumCircuit with properties:

    NumQubits: 2
        Gates: [2×1 quantum.gate.SimpleGate]
         Name: "bell"

この内側の "bell" 回路から構成される 2 つの複合ゲートを含む外側の回路を作成します。1 つ目の複合ゲートは、このゲートを含む外側の回路の量子ビット 1 および 3 に作用します。2 つ目の複合ゲートは、このゲートを含む外側の回路の量子ビット 2 および 4 に作用します。

outerGates = [compositeGate(innerCircuit,[1 3])
              compositeGate(innerCircuit,[2 4])];
outerCircuit = quantumCircuit(outerGates)
outerCircuit = 

  quantumCircuit with properties:

    NumQubits: 4
        Gates: [2×1 quantum.gate.CompositeGate]
         Name: ""

外側の回路をプロットします。

plot(outerCircuit)

Quantum circuit with two composite gates named bell

外側の回路は、インデックス 1、2、3、および 4 の 4 つの量子ビットで構成されます。プロットから、外側の回路の量子ビット 1 および 3 が 1 つ目の複合ゲートの内側の回路の量子ビット 1 および 2 にマッピングされ、外側の回路の量子ビット 2 および 4 が 2 つ目の複合ゲートの内側の回路の量子ビット 1 および 2 にマッピングされていることがわかります。

プロットでいずれかの複合ゲート ブロックをクリックします。複合ゲートの内部ゲートを示す新しい図が表示されます。

Internal gates of the bell composite gate

バージョン履歴

R2023a で導入