Main Content

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

comm.PSKTCMDemodulator

トレリス符号化 M-PSK 変調信号の復調および復号化

説明

comm.PSKTCMDemodulator System object™ は、M-ary 位相偏移変調 (PSK) 信号コンスタレーションとトレリス符号化変調 (TCM) 技術によって変調された信号を、ビタビ アルゴリズムを使用して復号化します。

トレリス符号化 M-PSK 変調信号を、次のように復調および復号化します。

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

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

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

作成

説明

psktcmDemod = comm.PSKTCMDemodulator は PSK TCM 復調器 System object を作成します。このオブジェクトは、トレリス符号化 M-PSK 変調信号を復調および復号化します。

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

psktcmDemod = comm.PSKTCMDemodulator(___,Name=Value) は、前述の任意の構文を使用して PSK TCM 復調器 System object を作成し、名前と値の引数を 1 つ以上使用してプロパティを設定します。たとえば、comm.PSKTCMDemodulator(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" に設定します。

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

データ型: double

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

使用法

説明

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

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

すべて折りたたむ

8-PSK TCM 変調方式を使用して、AWGN チャネルのデータを変調および復調します。結果のエラー レートを推定します。

入力シンボル 4 つと出力シンボル 8 つをもつトレリス構造体を定義します。

trellis =  poly2trellis([5 4],[23 35 0; 0 5 13]);

トレリス t を使用して、8-PSK TCM 変調器および復調器の System object を作成します。

M = 8;
psktcmod = comm.PSKTCMModulator(trellis,ModulationOrder=M);
psktcdemod = comm.PSKTCMDemodulator(trellis, ...
    ModulationOrder=M, ...
    TracebackDepth=16);

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

errRate = comm.ErrorRate( ...
    ReceiveDelay=psktcdemod.TracebackDepth*log2(trellis.numInputSymbols));

ランダムなバイナリ データを生成して、それを 8-PSK TCM で変調します。AWGN チャネルを通して変調信号を渡し、その信号を復調します。誤り統計を計算します。

for counter = 1:10
    % Transmit frames of 250 2-bit symbols
    data = randi([0 1],500,1);
    % Modulate
    modSignal = psktcmod(data);
    % Pass through AWGN channel
    noisySignal = awgn(modSignal,7);
    % Demodulate
    receivedData = psktcdemod(noisySignal);
    % Calculate error statistics
    errorStats = errRate(data,receivedData);
end

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

fprintf("Error rate = %5.2e\nNumber of errors = %d\n", ...
    errorStats(1),errorStats(2))
Error rate = 2.44e-02
Number of errors = 121

拡張機能

バージョン履歴

R2012a で導入