ドキュメンテーション

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

comm.gpu.LDPCDecoder System object

パッケージ: comm

GPU を使用してバイナリ低密度パリティ チェック データを復号化する

説明

GPU LDPCDecoder オブジェクトは、GPU (グラフィックス プロセシング ユニット) を使用して、バイナリ低密度パリティ チェック符号を復号化します。

    メモ:    このオブジェクトを使用するには、Parallel Computing Toolbox™ のライセンスをインストールして対象 GPU へのアクセス権を入手しなければなりません。詳細は、『Parallel Computing Toolbox』ドキュメンテーションの 「GPU 計算」 を参照してください。

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

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

  • 入力信号が gpuArray の場合は、出力信号も gpuArray です。この場合、データは GPU に残ります。そのため、このオブジェクトが gpuArray に渡されると、計算がすべて GPU 上で実行され、データ転送は発生しません。gpuArray 引数を使用して step メソッドを呼び出すと、シミュレーション時間が短縮されてパフォーマンスが向上します。詳細は、Parallel Computing Toolbox ドキュメンテーションの「GPU での配列の確立」を参照してください。

バイナリ低密度パリティ チェック コードを復号化するには、以下の手順に従います。

  1. バイナリ低密度パリティ チェック 復号器 オブジェクトを定義および設定します。「構築」を参照してください。

  2. step を呼び出して、comm.gpu.LDPCDecoder のプロパティに従い、バイナリ低密度パリティ チェック コードを復号化します。step の動作は、ツールボックスの各オブジェクト固有のものです。

構築

h = comm.gpu.LDPCDecoder は、GPU ベースの LDPC バイナリ低密度パリティ チェック 復号器 オブジェクト h を作成します。このオブジェクトは、指定されたパリティ チェック行列に基づいて LDPC 復号化を実行します。このオブジェクトは、パリティ チェック行列のパターンを想定しません。

h = comm.gpu.LDPCDecoder('PropertyName','ValueName') は、各指定プロパティがその指定値に設定された、GPU ベースの LDPC 復号器 オブジェクト h を作成します。('PropertyName1','PropertyValue1',...,'PropertyNameN','PropertyValueN') のように、追加の名前/値の引数ペアを任意の順番で指定できます。

h = comm.gpu.LDPCDecoder(PARITY) は、ParityCheckMatrix プロパティを PARITY に設定して、GPU ベースの LDPC 復号器 オブジェクト h を作成します。

プロパティ

ParityCheckMatrix

Parity-check matrix

パリティ チェック行列を、次元 (N 行 K 列) x N (ここで N > K > 0) のバイナリ値のスパース行列で指定します。このプロパティは、数値型または論理データ型を受け入れます。値 N の上限は (231)-1 です。既定の設定では、dvbs2ldpc(1/2) の結果である、DVB-S.2 標準規格からのハーフ レート LDPC 符号のパリティチェック行列です。

OutputValue

出力値形式の選択

出力値の形式を Information part または Whole codeword で指定します。既定の設定は Information part です。このプロパティを Information part に設定した場合、出力はメッセージ ビットのみを含み、K の倍数の長さの列ベクトルで、(N 行 K 列) x K のパリティ チェック行列とみなされます。このプロパティを Whole codeword に設定した場合、出力は、符号語ビットを含み、N 要素の列ベクトルです。

DecisionMethod

判定方法

復号化に使用する判定方法を Hard decision または Soft decision で指定します。既定の設定は Hard decision です。このパラメーターを Hard decision に設定した場合、出力は論理データ型の復号化されたビットです。このパラメーターを Soft decision に設定した場合、出力は single または double データ型の対数尤度比です。

IterationTerminationCondition

反復終了条件

復号化反復が終了する条件を Maximum iteration count または Parity check satisfied で指定します。既定の設定は Maximum iteration count です。このプロパティを Maximum iteration count に設定すると、オブジェクトは MaximumIterationCount プロパティに指定された回数の反復を実行します。このプロパティを Parity check satisfied に設定すると、個々の反復後にパリティ チェックが満たされたかを判別し、すべてのチェックが満たされた場合に終了します。

MaximumIterationCount

復号化反復の最大数

オブジェクトが使用する反復の最大数を、整数の数値スカラーで指定します。既定の設定は 50 です。このプロパティは、IterationTerminationCondition のプロパティが Maximum iteration count に設定されている場合に適用されます。

NumIterationsOutputPort

実行した反復数の出力

このプロパティを true に設定すると、オブジェクトが実際に実行した反復回数を出力します。既定値は偽です。

FinalParityChecksOutputPort

Output final parity checks

このプロパティを true に設定すると、オブジェクトが計算した最終パリティ チェックを出力します。既定値は偽です。

メソッド

clone同一プロパティ値をもつ GPU LDPC 復号器オブジェクトを作成する
isLocked入力属性と調整不可能なプロパティのロック状態
releaseプロパティ値と入力特性の変更を許可する
stepLDPC 復号化スキームによる入力信号の復号化

アルゴリズム

GPU LDPC Decoder System object は、LDPC Decoder ブロックと同じアルゴリズムを使用します。詳細は、「復号化アルゴリズム」を参照してください。

LDPC 符号化し、QPSK 変調されたビット ストリームを AWGN チャネル経由で送信してから、復調し、復号化して、誤りをカウントします。

    hEnc = comm.LDPCEncoder;
    hMod = comm.PSKModulator(4, 'BitInput',true);
    hChan = comm.AWGNChannel(...
            'NoiseMethod','Signal to noise ratio (SNR)','SNR',1);
    hDemod = comm.PSKDemodulator(4, 'BitOutput',true,...
            'DecisionMethod','Approximate log-likelihood ratio', ...
            'Variance', 1/10^(hChan.SNR/10));
    hDec = comm.gpu.LDPCDecoder;
    hError = comm.ErrorRate;
    for counter = 1:10
      data           = logical(randi([0 1], 32400, 1));
      encodedData    = step(hEnc, 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       = %1.2f\nNumber of errors = %d\n', ...
      errorStats(1), errorStats(2))
この情報は役に立ちましたか?