Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

comm.gpu.ConvolutionalEncoder

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

このオブジェクトを使用するには、Parallel Computing Toolbox™ をインストールして対象 GPU へのアクセス権を入手しなければなりません。GPU の詳細は、GPU 計算 (Parallel Computing Toolbox)を参照してください。

説明

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

GPU ベースの System object は、gpuArray クラスを使用して作成された一般的な MATLAB® 配列またはオブジェクトを受け入れます。GPU ベースの System object は、倍精度または単精度データ型の入力信号をサポートします。出力信号のデータ型は、入力信号から継承されます。

  • 入力信号が MATLAB 配列の場合、System object は CPU と GPU の間のデータ転送を処理します。出力信号は MATLAB 配列です。

  • 入力信号が gpuArray の場合、データは GPU に残ります。出力信号は gpuArray です。オブジェクトに gpuArray が渡されると、計算がすべて GPU 上で実行され、データ転送は発生しません。gpuArray 引数を渡すことにより、シミュレーション時間が短縮されてパフォーマンスが向上します。詳細については、GPU での配列の確立 (Parallel Computing Toolbox)を参照してください。

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

  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 は入力ビット ストリームの数です。

データ型: double

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

データ型: double

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

データ型: double

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

データ型: double

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

データ型: double

データ型: 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) はコンピューター上の GPU を使用することにより、トレリス構造体で指定された入力メッセージを畳み込み符号化します。利用できる GPU がない場合、畳み込み符号化の処理は中央演算装置 (CPU) で実行されます。GPU の詳細は、GPU 計算 (Parallel Computing Toolbox)を参照してください。出力は符号化された符号語です。

入力引数

すべて展開する

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

データ型: 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 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 = 1

拡張機能

バージョン履歴

R2012a で導入