Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

comm.GeneralQAMTCMDemodulator

トレリス符号化された一般的な直交振幅変調信号の復調および復号化

説明

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

トレリス符号化された一般的な直交振幅変調信号を復調および復号化するには、次のようにします。

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

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

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

作成

説明

gqamtcmDemod = comm.GeneralQAMTCMDemodulator は、一般的な QAM TCM 復調器 System object gqamtcmDemod を作成します。このオブジェクトは、トレリス符号化された一般的な直交振幅変調信号を復調および復号化します。

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

gqamtcmDemod = comm.GeneralQAMTCMDemodulator(___,Name=Value) は、前述の任意の構文を使用して一般的な QAM TCM 復調器 System object を作成し、名前と値の引数を 1 つ以上使用してプロパティを設定します。たとえば、comm.GeneralQAMTCMDemodulator(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" に設定すると、出力遅延は発生しません。また、トレースバック長は各入力ベクトルでシンボルの数以下でなければなりません。

データ型: double

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

依存関係

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

信号コンスタレーション。複素数ベクトルとして指定します。このベクトルは、畳み込み符号化器の結果をマッピングするために使用される信号コンスタレーション内の点をリストします。コンスタレーションは、分割設定の順序で指定しなければなりません。コンスタレーション ベクトルの長さは、一般的な QAM TCM 変調器オブジェクトの畳み込み符号化器に対し想定される入力シンボル数に等しくなければなりません。この値は、符号化率 K/N の畳み込み符号では 2N に相当します。既定の設定は、8-PSK 信号コンスタレーション点を分割設定の順序とすることに対応します。

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

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

使用法

説明

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

Y = gqamtcmDemod(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 の内部状態のリセット

すべて折りたたむ

任意の 4 点コンスタレーションの QAM TCM 変調を使ってノイズを含むデータを変調および復調します。結果の BER を推定します。

[171 133] 生成多項式を使用して、2 つの入力シンボルと 4 つの出力シンボルをもつトレリス構造を定義します。任意の 4 点コンスタレーションを定義します。

qamTrellis = poly2trellis(7,[171 133]);
refConst = exp(pi*1i*[1 2 3 6]/4);

qamTrellis および refConst を使用して、QAM TCM 変調器と復調器 System object™ のペアを作成します。

qamtcmod = comm.GeneralQAMTCMModulator( ...
    qamTrellis, ...
    Constellation=refConst);
qamtcdemod = comm.GeneralQAMTCMDemodulator( ...
    qamTrellis, ...
    Constellation=refConst);

TracebackDepth とシンボルあたりのビット数の積に等しい遅延 (ビット単位) をもつエラー レート計算機を作成します。

errorrate = comm.ErrorRate( ...
    ReceiveDelay=qamtcdemod.TracebackDepth * ...
    log2(qamTrellis.numInputSymbols));

ランダムなバイナリ データを生成して QAM TCM 変調を適用します。AWGN チャネルを通して信号を渡し、その信号を復調します。誤り統計を収集します。

for counter = 1:10
    % Generate binary data
    data = randi([0 1],500,1);
    % Modulate
    modSignal = qamtcmod(data);
    % Pass through an AWGN channel
    noisySignal = awgn(modSignal,4);
    % Demodulate
    receivedData = qamtcdemod(noisySignal);
    % Calculate the error statistics
    errorStats = errorrate(data,receivedData);
end

BER とビット エラー数を表示します。

fprintf("Error rate = %5.2e\nNumber of errors = %d\n", ...
    errorStats(1), errorStats(2))
Error rate = 9.84e-03
Number of errors = 49

拡張機能

バージョン履歴

R2012a で導入