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

comm.gpu.ViterbiDecoder

GPU によるビタビ アルゴリズムを使用した畳み込み符号化されたデータの復号化

説明

GPU ViterbiDecoder System object™ は、GPU (グラフィックス プロセシング ユニット) を使用して入力シンボルを復号化し、バイナリ出力シンボルを生成します。このオブジェクトは可変サイズの信号を処理しますが、可変サイズの信号は消去入力には利用できません。

メモ

このオブジェクトを使用するには、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.ViterbiDecoder のプロパティに従い、入力シンボルを復号化します。step の動作は、ツールボックスの各オブジェクト固有のものです。

メモ

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

構築

H = comm.gpu.ViterbiDecoder は、ビタビ復号化器 System object H を作成します。このオブジェクトは、ビタビ アルゴリズムを使用して、畳み込み符号化された入力データを復号化します。

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

H = comm.gpu.ViterbiDecoder(TRELLIS,Name,Value) は、TrellisStructure プロパティに TRELLIS、その他の指定されたプロパティ名に指定された値を設定して、ビタビ復号化器オブジェクト H を作成します。

プロパティ

TrellisStructure

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

トレリスを、畳み込み符号のトレリス表現を含む MATLAB 構造体として指定します。構造体が有効なトレリス構造体かどうかを確認するには、関数 istrellis を使用します。このオブジェクトは、シンプルなフィードフォワード符号化器からの符号化率 1/2、1/3、および 1/4 のトレリスをサポートします。既定値は poly2trellis(7, [171 133]) の結果です。

InputFormat

入力形式

復号化器への入力形式を UnquantizedHardSoft のいずれかで指定します。既定の設定は Unquantized です。

このプロパティを Unquantized に設定した場合、入力は倍精度または単精度の量子化されていない軟判定値の実数ベクトルでなければなりません。このオブジェクトは負の数を 1、正の数を 0 とみなします。このプロパティを Hard に設定した場合、入力は 0 または 1 の硬判定値のベクトルでなければなりません。入力のデータ型は、倍精度または単精度にできます。このプロパティを Soft に設定した場合、入力は 0 から 2^SoftInputWordLength-1 までの整数として表現された量子化された軟判定値のベクトルでなければなりません。入力のデータ型は、倍精度または単精度にできます。

SoftInputWordLength

軟入力の語長

個々の量子化された軟入力値の表現に使用するビット数を、正の整数スカラーで指定します。このプロパティは、InputFormat プロパティを Soft に設定した場合に適用されます。既定の設定は 4 ビットです。

InvalidQuantizedInputAction

入力値が範囲外の場合のアクション

唯一の有効な設定は Ignore で、範囲外の入力を無視します。

TracebackDepth

Traceback depth

各トレースバック パスを構築するために使用するトレリス分岐の数を、256 以下の正の整数スカラーで指定します。トレースバック長は復号化の精度と遅延に影響を与えます。最初に復号化される出力のシンボルよりも前のゼロ シンボルの数が復号化遅延を表します。TerminationMethod プロパティを Continuous に設定すると、復号化遅延は符号化率 1/N の畳み込み符号に対する TracebackDepth ゼロ シンボルまたは TracebackDepth ゼロ ビットで構成されます。TerminationMethod プロパティを Truncated または Terminated に設定した場合、出力遅延は発生せず、TracebackDepth は、各入力のシンボル数以下でなければなりません。符号化率が 1/2 の場合、一般的なトレースバック長値はコードの拘束長の約 5 倍です。既定の設定は 34 です。

TerminationMethod

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

TerminationMethod プロパティに ContinuousTruncatedTerminated のいずれかを指定します。既定の設定は Continuous です。Continuous モードでは、オブジェクトは次のフレームで使用するために、各フレームの最後で内部状態メトリクスを保存します。オブジェクトは、各トレースバック パスを個別に扱います。入力信号に 1 つのシンボルだけが含まれているときは、Continuous モードを選択します。Truncated モードの場合、オブジェクトは各フレームを個別に扱います。トレースバック パスは最良のメトリクスで始まり、常にすべて 0 の状態で終了します。Terminated モードでは、オブジェクトは各フレームを個別に扱い、トレースバック パスはすべて 0 の状態で開始し、終了します。

ResetInputPort

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

このプロパティを true に設定すると、追加の step メソッド入力が有効になります。このリセット入力が非ゼロ値の場合、オブジェクトは復号化器の内部状態を初期条件にリセットします。このプロパティは、TerminationMethod プロパティを Continuous に設定した場合に適用されます。既定値は偽です。

DelayedResetAction

出力リセットの遅延

出力リセットの遅延はサポートされていません。有効な設定は false のみです。

PuncturePatternSource

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

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

PuncturePattern

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

符号化されたデータをパンクチャするために使用するパンクチャパターンを指定します。既定の設定は [1; 1; 0; 1; 0; 1] です。パンクチャ パターンは、1 と 0 からなる列ベクトルです。ここで 0 は、ダミーのビットの挿入位置です。パンクチャ パターンは符号化器によって使用されるパンクチャ パターンと一致しなければなりません。このプロパティは、PuncturePatternSource プロパティを Property に設定した場合に適用されます。

ErasuresInputPort

消去入力を有効にする

消去はサポートされていません。有効な設定は false のみです。

OutputDataType

出力のデータ型

有効な設定は Full precision のみで、この場合、出力データ型は入力データ型と一致します。

NumFrames

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

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

メソッド

infoGPU ベース ビタビ復号化器オブジェクトの情報を表示する
resetGPU ベース ビタビ復号化器変調器オブジェクトの状態のリセット
stepビタビ アルゴリズムを使用した畳み込み符号化されたデータの復号化
すべての System object に共通
release

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

畳み込み符号化され、8-DPSK 変調されたビット ストリームを AWGN チャネル経由で送信します。次に、ビタビ復号化器を使用して復調、復号化し、誤りをカウントします。

hConEnc = comm.ConvolutionalEncoder;
hMod = comm.DPSKModulator('BitInput',true);
hChan = comm.gpu.AWGNChannel('NoiseMethod', ...
            'Signal to noise ratio (SNR)', 'SNR',10);
hDemod = comm.DPSKDemodulator('BitOutput',true);                                  
hDec = comm.gpu.ViterbiDecoder('InputFormat','Hard');
% Delay in bits is TracebackDepth times the number of
% bits per symbol
   delay = hDec.TracebackDepth*...
              log2(hDec.TrellisStructure.numInputSymbols);
hError = comm.ErrorRate('ComputationDelay',3,'ReceiveDelay',delay);
    for counter = 1:20
      data = randi([0 1],30,1);
      encodedData = step(hConEnc, data);
      modSignal = step(hMod, encodedData);
      receivedSignal = step(hChan, modSignal);
      demodSignal = step(hDemod, receivedSignal);
      receivedBits = step(hDec, demodSignal);
      errorStats = step(hError, data, receivedBits);
    end
 fprintf('Error rate = %f\nNumber of errors = %d\n', ...
 errorStats(1), errorStats(2))

参考文献

[1] Fettweis, G., H. Meyr. "Feedforward Architecture for Parallel Viterbi Decoding,” Journal of VLSI Signal Processing, Vol. 3, June 1991.

拡張機能

R2012a で導入