最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

comm.gpu.ConvolutionalEncoder

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

説明

GPU ConvolutionalEncoder オブジェクトは、バイナリ入力ベクトルのシーケンスを符号化して、バイナリ出力ベクトルのシーケンスを生成します。

メモ

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

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. 畳み込み符号化器オブジェクトを定義および設定します。構築を参照してください。

  2. step を呼び出して、comm.gpu.ConvolutionalEncoder のプロパティに従い、バイナリ入力ベクトルのシーケンスを符号化して、バイナリ出力ベクトルのシーケンスを生成します。step の動作は、ツールボックスの各オブジェクト固有のものです。

メモ

R2016b 以降では、step メソッドを使用して、System object によって定義された演算を実行する代わりに、引数を関数であるかのように使ってオブジェクトを呼び出すことができます。たとえば、y = step(obj,x)y = obj(x) は同等の演算を実行します。

構築

H = comm.gpu.ConvolutionalEncoder は、バイナリ データを畳み込み符号化する System object H を作成します。

H = comm.gpu.ConvolutionalEncoder(Name,Value) は、指定の各プロパティが指定の値に設定された、畳み込み符号化器オブジェクト H を作成します。(Name1,Value1,...,NameN,ValueN) のように、追加の名前と値のペアの引数を任意の順番で指定できます。

H = comm.gpu.ConvolutionalEncoder(TRELLIS,Name,Value) は畳み込み符号化器オブジェクト H を作成します。このオブジェクトは、TrellisStructure プロパティを TRELLIS に設定し、指定の他のプロパティは指定の値に設定しています。

プロパティ

TrellisStructure

畳み込み符号のトレリス構造体

トレリスを、畳み込み符号のトレリス表現を含む MATLAB 構造体として指定します。既定の設定は、poly2trellis(7, [171 133]) の結果です。構造体が有効なトレリス構造体かどうかを確認するには、関数 istrellis を使用します。

TerminationMethod

符号化フレームの終了方法

符号化されたフレームの終了方法を ContinuousTruncated または Terminated のいずれかとして指定します。既定の設定は Continuous です。

このプロパティを Continuous に設定すると、次の入力ベクトルで使用するために、オブジェクトによって各入力ベクトルの最後に符号化器状態が保持されます。

このプロパティを Truncated に設定すると、オブジェクトは各入力ベクトルを個別に扱い、状態をすべて 0 の状態にリセットします。

このプロパティを Terminated に設定すると、オブジェクトは各入力ベクトルを個別に扱います。オブジェクトは各入力ベクトルごとに追加のビットを使用して、符号化器の状態をベクトル終了時にすべて 0 の状態にリセットします。レート K/N の符号に対し、step メソッドは長さ N×(L+S)K のベクトルを出力します。ここで S = constraintLength–1 です。複数の拘束長がある場合は、S = sum(constraintLength(i)–1)) です。L は step メソッドへの入力の長さです。

ResetInputPort

符号化器のリセット入力を有効にする

入力端子を使用してこの符号化器オブジェクトをリセットすることはできません。唯一の有効なプロパティ設定は false です。

DelayedResetAction

出力リセットの遅延

入力端子を使用してこの符号化器オブジェクトをリセットすることはできません。唯一の有効なプロパティ設定は false です。

InitialStateInputPort

この符号化器オブジェクトの初期状態を設定することはできません。唯一の有効なプロパティ設定は false です。

FinalStateOutputPort

この符号化器オブジェクトの最終状態を出力することはできません。唯一の有効なプロパティ設定は false です。

PuncturePatternSource

パンクチャ パターンのソース

パンクチャ パターン原始多項式のソースを、None または Property のいずれかとして指定します。既定の設定は None です。このプロパティを None に設定すると、オブジェクトはパンクチャを行いません。このプロパティを Property に設定すると、オブジェクトはコードをパンクチャします。このパンクチャは、PuncturePattern プロパティで指定するパンクチャ パターン ベクトルに基づいています。このプロパティは、TerminationMethod プロパティを Continuous または Truncated に設定した場合に適用されます。

PuncturePattern

パンクチャ パターン ベクトル

符号化されたデータを列ベクトルとしてパンクチャするためにオブジェクトで使用されるパンクチャ パターンを指定します。既定の設定は [1; 1; 0; 1; 0; 1] です。ベクトルは 10 から成り、ここで 0 はパンクチャされたビット、すなわち除外されたビットを示します。このプロパティは、TerminationMethod プロパティを Continuous または Truncated に、PuncturePatternSource プロパティを Property に設定した場合に適用されます。

NumFrames

入力および出力データ ベクトルに存在する独立フレームの数

単一のデータ入力/出力ベクトルに含まれる独立フレームの数を指定します。このプロパティの既定値は 1 です。オブジェクトは入力ベクトルを NumFrames 個のセグメントに分割して、これらのセグメントを個別に符号化します。出力には NumFrames 個の符号化されたセグメントが含まれます。このプロパティは、TerminationMethodTerminated または Truncated に設定した場合に適用されます。

メソッド

reset畳み込み符号化器オブジェクトの状態のリセット
stepバイナリ データの畳み込み符号化
すべての System object に共通
release

System object のプロパティ値の変更の許可

すべて折りたたむ

畳み込み符号化され、8-PSK 変調されたビット ストリームを AWGN チャネル経由で送信します。

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

hConEnc = comm.gpu.ConvolutionalEncoder;

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

hMod = comm.gpu.PSKModulator('BitInput',true);

S/N 比が 7 の GPU ベースの AWGN チャネル System object を作成します。

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

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

hDemod = comm.gpu.PSKDemodulator('BitOutput',true);

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

hDec = comm.gpu.ViterbiDecoder('InputFormat','Hard');

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

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

step メソッドを使用してシミュレーションを実行し、データを処理します。

for counter = 1:20
  data = randi([0 1],30,1);
  encodedData = step(hConEnc, gpuArray(data));
  modSignal = step(hMod, encodedData);
  receivedSignal = step(hChan, modSignal);
  demodSignal = step(hDemod, receivedSignal);
  receivedBits = step(hDec, demodSignal);
  errors = step(hError, data, gather(receivedBits));
end

エラーを表示します。

disp(errors)

アルゴリズム

このオブジェクトは、Convolutional Encoder ブロックのリファレンス ページで説明されているアルゴリズム、入力、および出力を実装しています。オブジェクト プロパティはブロック パラメーターに対応します。

拡張機能

R2012a で導入