Main Content

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

comm.gpu.ConvolutionalEncoder

GPU によるバイナリ データの畳み込み符号化

このオブジェクトを使用するには、Parallel Computing Toolbox™ がインストールされており、サポートされる GPU にアクセスできなければなりません。ホスト コンピューターに GPU が構成されている場合、処理には GPU が使用されます。そうでない場合、処理には CPU が使用されます。GPU の詳細については、GPU 計算 (Parallel Computing Toolbox)を参照してください。

説明

comm.gpu.ConvolutionalEncoder System object™ は、グラフィックス処理装置 (GPU) を使用してバイナリ入力ベクトルのシーケンスを畳み込み符号化し、バイナリ出力ベクトルのシーケンスを生成します。

バイナリ信号を畳み込み符号化するには、以下の手順に従います。

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

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

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

作成

説明

gpuConvEncoder = comm.gpu.ConvolutionalEncoder は GPU ベースの畳み込み符号化器 System object を作成します。

gpuConvEncoder = comm.gpu.ConvolutionalEncoder(trellis)TrellisStructure プロパティを trellis に設定します。

gpuConvEncoder = comm.gpu.ConvolutionalEncoder(___,Name,Value) は、前の構文の任意の入力引数の組み合わせに加えて、1 つ以上の名前と値からなる引数を使用してプロパティを設定します。たとえば、'TerminationMethod','Continuous' は、終了方法を連続として指定し、各入力ベクトルの最後に符号化器の状態を保持して次の入力ベクトルで使用できるようにします。

プロパティ

すべて展開する

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

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

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

畳み込み符号のトレリス構造体。符号化率 K / N の符号に対するトレリス表現を含む構造体として指定します。K は入力ビット ストリーム数を表し、N は出力ビット ストリーム数を表します。

トレリス構造体は、関数 poly2trellis を使用して作成するか、手動で作成することができます。この構造体の詳細については、畳み込み符号のトレリス表現および関数 istrellis を参照してください。

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

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

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

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

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

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

データ型: struct

符号化フレームの終了方法。以下のいずれかの値を指定します。

  • 'Continuous' — System object は入力ベクトルの最後に符号化器の状態を保持して、次の入力ベクトルで使用できるようにします。

  • 'Truncated' — System object は各入力ベクトルを個別に扱います。符号化器の状態は、各入力ベクトルの開始時にリセットされます。InitialStateInputPort プロパティを 0 (false) に設定した場合、オブジェクトはその状態をすべてゼロの状態にリセットします。InitialStateInputPort プロパティを 1 (true) に設定した場合、オブジェクトはその状態を、InitialStateInputPort 入力で指定された値にリセットします。

  • 'Terminated' — System object は各入力ベクトルを個別に扱います。オブジェクトは各入力ベクトルごとに追加のビットを使用して、符号化器の状態をベクトル終了時にすべて 0 の状態にリセットします。レート K/N の符号に対し、オブジェクトは長さ (N ✕ (L + S))/K のベクトルを出力します。この計算では、S = constraintLength – 1 (複数の拘束長がある場合は、S = sum(constraintLength(i) – 1) です。L は入力の長さです。constraintLength -1 は log2(NumStates) として定義されます。

データ型: char | string

符号化器のリセット入力を有効にするオプション。数値または logical 0 (false) として指定します。有効な設定は false のみです。

データ型: logical | numeric

出力リセットを遅延するオプション。数値または logical 0 (false) として指定します。有効な設定は false のみです。

データ型: logical | numeric

初期状態入力を有効にするオプション。数値または logical 0 (false) として指定します。有効な設定は false のみです。

データ型: logical | numeric

最終状態出力を有効にするオプション。数値または logical 0 (false) として指定します。有効な設定は false のみです。

データ型: logical | numeric

パンクチャ パターンのソース。次のいずれかの値を指定します。

  • 'None' — オブジェクトはパンクチャを適用しません。

  • 'Property' — オブジェクトはコードをパンクチャします。このパンクチャは、PuncturePattern プロパティで指定するパンクチャ パターン ベクトルに基づきます。

依存関係

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

データ型: char | string

符号化されたデータをパンクチャするためのパンクチャ パターン ベクトル。列ベクトルとして指定します。ベクトルには 10 が含まれている必要があります。ここで、0 はパンクチャされたビットまたは除外されたビットの位置を示します。

依存関係

このプロパティを有効にするには、TerminationMethod プロパティを 'Continuous' または 'Truncated' に設定し、PuncturePatternSource プロパティを 'Property' に設定します。

データ型: double

入力および出力データ ベクトルに存在する独立フレームの数。整数として指定します。

オブジェクトは入力ベクトルを NumFrames 個のセグメントに分割して、これらのセグメントを個別に符号化します。出力には NumFrames 個の符号化されたセグメントが含まれます。

依存関係

このプロパティを有効にするには、TerminationMethod プロパティを 'Truncated' または 'Terminated' に設定します。

データ型: double

使用法

説明

codeword = gpuConvEncoder(message) は、トレリス構造体で指定された入力メッセージを畳み込み符号化し、符号化されたコードワードを返します。

入力引数

すべて展開する

入力メッセージ。バイナリ値列ベクトルとして指定します。

データ転送のレイテンシを短縮するには、入力信号を gpuArray (Parallel Computing Toolbox) オブジェクトとして書式設定します。詳細については、GPU ベースの System object を使用した配列処理を参照してください。

データ型: double | single | logical

出力引数

すべて展開する

畳み込み符号化されたメッセージ。バイナリ値列ベクトルとして返されます。この出力ベクトルのデータ型および方向は入力 message と同じです。

畳み込み符号化器が符号化率 K/N の符号を表す場合、入力ベクトルの長さは、所定の正の整数 L について K×L に等しくなります。オブジェクトは、この出力ベクトルの長さを L×N に設定します。

データ型: double | single | logical

オブジェクト関数

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

release(obj)

すべて展開する

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

すべて折りたたむ

GPU ベースの畳み込み符号化器 System object を作成します。

conEnc = comm.gpu.ConvolutionalEncoder;

ビット入力信号を受け入れる GPU ベースの位相偏移変調 (PSK) の変調器 System object を作成します。

modPSK = comm.gpu.PSKModulator(BitInput=true);

S/N 比が 7 の GPU ベースの加法性ホワイト ガウス ノイズ (AWGN) チャネル System object を作成します。

chan = comm.gpu.AWGNChannel( ...
    NoiseMethod='Signal to noise ratio (SNR)', ...
    SNR=7);

ビット値の列ベクトルを出力する GPU ベースの PSK 復調器 System object を作成します。

demodPSK = comm.gpu.PSKDemodulator(BitOutput=true);

0 または 1 の硬判定値の入力ベクトルを受け入れる、GPU ベースのビタビ復号化器 System object を作成します。

vDec = comm.gpu.ViterbiDecoder(InputFormat='Hard');

3 つのデータ サンプルを無視した後に比較を行う、エラー レート System object を作成します。受信データは送信データよりも 34 個のサンプル分遅れます。

error = comm.ErrorRate(ComputationDelay=3,ReceiveDelay=34);

次の for ループを使用してデータを処理し、シミュレーションを実行します。

for counter = 1:20
    data = randi([0 1],30,1);
    encodedData = conEnc(gpuArray(data));
    modSignal = modPSK(encodedData);
    receivedSignal = chan(modSignal);
    demodSignal = demodPSK(receivedSignal);
    receivedBits = vDec(demodSignal);
    errors = error(data,gather(receivedBits));
end

誤り数を表示します。

errors(2)
ans = 26

詳細

すべて展開する

拡張機能

バージョン履歴

R2012a で導入