Main Content

comm.RectangularQAMTCMDemodulator

トレリス符号化矩形直交振幅変調信号の復調と復号化

説明

comm.RectangularQAMTCMDemodulator System object™ オブジェクトは、矩形直交振幅変調 (QAM) 信号コンスタレーションとトレリス符号化変調 (TCM) 技術によって変調された信号を、ビタビ アルゴリズムを使用して復号化します。

トレリス符号化矩形 QAM 信号を、次のように復調および復号化します。

  1. comm.RectangularQAMTCMDemodulator オブジェクトを作成し、そのプロパティを設定します。

  2. 関数と同様に、引数を指定してオブジェクトを呼び出します。

System object の機能の詳細については、System object とはを参照してください。

作成

説明

qamtcmDemod = comm.RectangularQAMTCMDemodulator は、矩形 QAM TCM 復調器 System object qamtcmDemod を作成します。このオブジェクトは、トレリス符号化矩形 QAM 信号を復調および復号化します。

qamtcmDemod = comm.RectangularQAMTCMDemodulator(trellis) はさらに、TrellisStructure プロパティを trellis に設定します。

qamtcmDemod = comm.RectangularQAMTCMDemodulator(___,Name=Value) は、前述の任意の構文を使用して矩形 QAM TCM 復調器 System object を作成し、名前と値の引数を 1 つ以上使用してプロパティを設定します。たとえば、comm.RectangularQAMTCMDemodulator(TerminationMethod="Continuous") は、符号化フレームの終了方法を "Continuous" に設定します。

プロパティ

すべて展開する

特に指定がない限り、プロパティは "調整不可能" です。つまり、オブジェクトの呼び出し後に値を変更することはできません。オブジェクトは呼び出すとロックされ、ロックを解除するには関数 release を使用します。

プロパティが "調整可能" の場合、その値をいつでも変更できます。

プロパティ値の変更の詳細については、System object を使用した MATLAB でのシステム設計を参照してください。

畳み込み符号のトレリス構造体。畳み込み符号のトレリス表現を含む MATLAB® 構造体として指定します。トレリス構造体が有効かどうかを確認するには、関数 istrellis を使用します。

トレリス構造体には次のフィールドがあります。

符号化器への入力シンボルの数。2K と等しい整数として指定します。ここで、K は入力ビット ストリームの数です。

符号化器からの出力シンボルの数。2N と等しい整数として指定します。ここで、N は出力ビット ストリームの数です。

符号化器内の状態の数。2 のべき乗として指定します。

現在の状態と現在の入力のすべての組み合わせの次の状態。整数の行列として指定します。行列のサイズは numStates 行 2K 列でなければなりません。

現在の状態と現在の入力のすべての組み合わせの出力。8 進数の行列として指定します。行列のサイズは numStates 行 2K 列でなければなりません。

データ型: struct

符号化フレームの終了方法。次のオプションのいずれかとして指定します。

  • "Continuous" — オブジェクトは各フレームの最後で内部状態メトリクスを保存します。次のフレームは同じ状態メトリクスを使用します。オブジェクトは、各トレースバック パスを個別に扱います。入力信号が 1 つのシンボルしか含んでいない場合は "Continuous" モードを使用します。

  • "Truncated" — オブジェクトは各入力ベクトルを個別に扱います。トレースバック パスは最良のメトリクスで始まり、常にすべて 0 の状態で終了します。

  • "Terminated" — オブジェクトは各入力ベクトルを個別に扱い、トレースバック パスは常にすべて 0 の状態で開始および終了します。

ビタビ復号化器のトレースバック長。正の整数として指定します。トレースバック長は復号化の精度と遅延に影響を与えます。復号化遅延は、出力の最初に復号化されるシンボルよりも前の 0 シンボルの数です。

TerminationMethod プロパティを "Continuous" に設定すると、復号化遅延は TracebackDepth 個のゼロ シンボル、または (TracebackDepth×K) 個のゼロ ビット (符号化率 K/N の畳み込み符号の場合) で構成されます。

TerminationMethod プロパティを "Truncated" または "Terminated" に設定すると、出力遅延は発生しません。また、トレースバック長は各入力ベクトルでシンボルの数以下でなければなりません。

データ型: single | double

復調器リセット入力。logical の 0 (false) または 1 (true) として指定します。追加の入力を使用してオブジェクトを呼び出すには、このプロパティを true に設定します。リセット入力値が非ゼロの場合、オブジェクトは復調器の状態メトリクスとトレースバック メモリをゼロにリセットします。

依存関係

このプロパティを有効にするには、TerminationMethod プロパティを "Continuous" に設定します。

信号コンスタレーション点の数。481632、または 64 として指定します。ModulationOrder プロパティの値は矩形 QAM TCM 復調器オブジェクトの畳み込み復号化器からの出力シンボルとして想定される数に等しくなければなりません。そのため、ModulationOrder プロパティの値は、符号化率 K/N の畳み込み符号の 2N に等しくなければなりません。

データ型: double

出力のデータ型。"logical" または "double" として指定します。

使用法

説明

Y = qamtcmDemod(X) は、矩形直交振幅変調データ X を復調し、畳み込み符号で符号化されている復調結果のビットストリームをビタビ アルゴリズムを使用して復号化します。

Y = qamtcmDemod(X,R) は、非ゼロのリセット信号 R を入力したときに、復号化器をすべて 0 の状態にリセットします。この構文は、ResetInputPort プロパティの値を true に設定した場合に適用されます。

入力引数

すべて展開する

入力データ。列ベクトルとして指定します。

データ型: double | logical
複素数のサポート: あり

リセット信号。logical 0 (false)、logical 1 (true)、または数値スカラーとして指定します。

依存関係

この引数を使用するには、ResetInputPort プロパティを true に設定します。

データ型: double | logical

出力引数

すべて展開する

出力データ。列ベクトルとして指定します。畳み込み符号化器が符号化率 K/N の符号を表す場合、出力ベクトルの長さは (K×L) になります。ここで、L は入力ベクトル X の長さです。出力データのデータ型は、OutputDataType プロパティによって異なります。

オブジェクト関数

オブジェクト関数を使用するには、System object を最初の入力引数として指定します。たとえば、obj という名前の System object のシステム リソースを解放するには、次の構文を使用します。

release(obj)

すべて展開する

stepSystem object のアルゴリズムの実行
releaseリソースを解放し、System object のプロパティ値と入力特性の変更を可能にします。
resetSystem object の内部状態のリセット

すべて折りたたむ

AWGN チャネルのデータを、矩形 16-QAM TCM を使用して変復調します。ビット エラー レート (BER) を推定します。

QAM TCM 変調器と QAM TCM 復調器の System object を作成します。

rqamtcmod = comm.RectangularQAMTCMModulator;
rqamtcdemod = comm.RectangularQAMTCMDemodulator(TracebackDepth=16);

QAM TCM 復調器による遅延を決定します。復調器は、矩形 QAM を使用して変調された TCM 信号を、ビタビ アルゴリズムを使用して復調します。エラー レートの計算でビット エラー レートを正確に計算するには、受信サンプル数と送信サンプル数を一致させなければなりません。シンボルあたりのビットの数、および TCM 復調器内の復号化器のトレースバック長を使用して、システム内の遅延を計算します。

bitsPerSymbol = log2(rqamtcdemod.TrellisStructure.numInputSymbols);
delay = rqamtcdemod.TracebackDepth*bitsPerSymbol;

ReceiveDelay プロパティを delay に設定して、エラー レート計算機オブジェクトを作成します。

errRate = comm.ErrorRate(ReceiveDelay=delay);

バイナリ データを生成し、それを 16-QAM TCM で変調します。AWGN チャネルを通して信号を渡し、その信号を復調します。誤り統計を計算します。ループは、100 個のビット エラーが検出されるか、合計 1e7 ビットが送信されるまで実行されます。

% Initialize the error results vector.
errStats = [0 0 0];

while errStats(2) < 100 && errStats(3) < 1e7
    % Transmit frames of 200 3-bit symbols
    txData = randi([0 1],600,1);
    % Modulate
    txSig = rqamtcmod(txData);
    % Pass through AWGN channel
    rxSig = awgn(txSig,5);
    % Demodulate
    rxData = rqamtcdemod(rxSig);
    % Collect error statistics
    errStats = errRate(txData,rxData);
end

誤りデータを表示します。

fprintf("Error rate = %4.2e\nNumber of errors = %d\n", ...
    errStats(1),errStats(2))
Error rate = 2.03e-03
Number of errors = 100

拡張機能

バージョン履歴

R2012a で導入