メインコンテンツ

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

nrLDPCDecode

低密度パリティチェック (LDPC) 復号化

説明

[out,actNumIter,finalParityChecks] = nrLDPCDecode(in,bgn,maxNumIter) は、入力データ行列 in、ベース グラフ番号 bgn、および復号化反復の最大回数 maxNumIter について、LDPC 復号化された出力行列 out を返します。この関数は、実際の反復回数 actNumIter と、コードワードごとの最終パリティ チェック finalParityChecks も返します。

この復号化器は、sum-product メッセージ伝達法アルゴリズムを使用します。データ ビットは、TS 38.212 の Section 5.3.2 [1]の定義に従って LDPC 符号化されなければなりません。

[out,actNumIter,finalParityChecks] = nrLDPCDecode(___,Name,Value) は、前述の構文の入力引数に加えて、オプションの名前と値のペアの引数を指定します。

すべて折りたたむ

長さが 2560 の 2 つのコード ブロック セグメントと末尾の 36 個のフィラー ビットで構成される送信データを作成します。

C = 2;          
K = 2560;       
F = 36;    
txcbs = ones(K-F,C);
fillers = -1*ones(F,C);
txcbs = [txcbs;fillers];                

送信データの LDPC コードワードを生成します。ベース グラフ番号 2 を使用します。

bgn = 2; 
txcodedcbs = nrLDPCEncode(txcbs,bgn);   

送信データをソフト ビットに変換します。送信データのフィラーは、対数尤度比 (LLR) のソフト ビットをもちません。

rxcodedcbs = double(1-2*txcodedcbs);    
FillerIndices = find(txcodedcbs(:,1) == -1);
rxcodedcbs(FillerIndices,:) = 0;        

符号化されたコードワードを最大 25 回の反復で復号化します。

[rxcbs,actualniters] = nrLDPCDecode(rxcodedcbs,bgn,25);  

送信データのフィラー ビットをゼロに置き換え、符号化と復号化の結果を比較します。

txcbs(end-F+1:end,:) = 0;    
isequal(rxcbs,txcbs)                
ans = logical
   1

actualniters
actualniters = 1×2

     1     1

入力引数

すべて折りたたむ

入力コード ブロック セグメントに対してレート リカバリされるソフト ビット。実数行列として指定します。in の列数は、スケジュールされたコード ブロック セグメントの数と同じです。in の行数は、コードワードの長さと同じで、組織的ビットの一部がパンクチャされます。

データ型: double | single

ベース グラフ番号。1 または 2 として指定します。この値には、TS 38.212 の Section 5.3.2 [1]で定義されている 2 つのベース グラフのいずれかを選択します。

データ型: double

復号化反復の最大回数。正の整数スカラーとして指定します。復号化は、すべてのパリティ チェックが達成されたとき、または maxNumIter 回の反復の後に終了します。

データ型: double

名前と値の引数

すべて折りたたむ

オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで、Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。

R2021a より前では、コンマを使用して名前と値をそれぞれ区切り、Name を引用符で囲みます。

例: [out,actNumIter,finalParityChecks] = nrLDPCDecode(in,bgn,maxNumIter,'DecisionType','hard')

出力形式。'OutputFormat' と次の値のいずれかで構成されるコンマ区切りのペアとして指定します。

  • 'info'out の行数は、情報ビットの長さと同じです。

  • 'whole'out の行数は、コードワードの長さと同じです。

データ型: char | string

復号化に使用する判定方法。'DecisionType' と次の値のいずれかで構成されるコンマ区切りのペアとして指定します。

  • 'hard'out のデータ型は int8 です。

  • 'soft' — 出力 out には、in と同じデータ型の対数尤度比が含まれます。

データ型: char | string

LDPC 復号化アルゴリズム。'Algorithm' と次の値のいずれかで構成されるコンマ区切りのペアとして指定します。

  • 'Belief propagation' — このオプションを使用して、確率伝達 (メッセージ伝達) アルゴリズムを指定します。詳細については、確率伝播復号化を参照してください。

  • 'Layered belief propagation' — このオプションを使用して、階層的確率伝達アルゴリズムを指定します。これは、準巡回パリティチェック行列 (PCM) に適しています。詳細については、階層的確率伝播復号化を参照してください。

  • 'Normalized min-sum' — このオプションを使用して、正規化 min-sum 近似を使用する階層的確率伝播アルゴリズムを指定します。詳細については、正規化 Min-Sum 復号化を参照してください。

  • 'Offset min-sum' — このオプションを使用して、オフセット min-sum 近似を使用する階層的確率伝播アルゴリズムを指定します。詳細については、オフセット Min-Sum 復号化を参照してください。

メモ

この名前と値のペアの引数の値を 'Normalized min-sum' または 'Offset min-sum' として指定すると、関数は復号化前に入力 (対数尤度比) LLR 値を [-1e10 1e10] の範囲にクリップします。

データ型: char | string

正規化 min-sum 復号化のスケーリング係数。'ScalingFactor' と範囲 (0, 1] の実数スカラーで構成されるコンマ区切りのペアとして指定します。

依存関係

この名前と値のペアの引数を有効にするには、名前と値のペアの引数 'Algorithm''Normalized min-sum' に設定します。

データ型: double

オフセット min-sum 復号化のオフセット。'Offset' と非負で有限の実数スカラーで構成されるコンマ区切りのペアとして指定します。

依存関係

この名前と値のペアの引数を有効にするには、名前と値のペアの引数 'Algorithm''Offset min-sum' に設定します。

データ型: double

復号化の終了基準。'Termination' と次の値のいずれかで構成されるコンマ区切りのペアとして指定します。

  • 'early' — 復号化は、すべてのパリティ チェックが達成されたとき、または maxNumIter 回の反復の後に終了します。

  • 'max' — 復号化は、maxNumIter 回の反復の後に終了します。

データ型: char | string

出力引数

すべて折りたたむ

復号化された LDPC コードワードまたは情報ビット。実数行列として返されます。out の列数は、スケジュールされたコード ブロック セグメントの数と同じです。out の行数は、名前と値のペアの引数 'OutputFormat' によって異なります。out のデータ型は、名前と値のペアの引数 'DecisionType' によって異なります。

データ型: single | double | int8

実際の反復回数。正の整数の行ベクトルとして返されます。actNumIter の長さは in の列数と同じです。actNumIteri 番目の要素は、ini 列目に対して実行された実際の反復回数に対応します。

データ型: double

最終パリティ チェック。行列として返されます。finalParityChecks の行数は、LDPC コードワードのパリティチェック ビットの数と同じです。finalParityChecksi 列目は、i 番目のコードワードの最終パリティ チェックに対応します。

データ型: double

アルゴリズム

すべて折りたたむ

関数 nrLDPCDecode は、以下の 4 つの LDPC 復号化アルゴリズムをサポートしています。

参照

[1] 3GPP TS 38.212. “NR; Multiplexing and channel coding.” 3rd Generation Partnership Project; Technical Specification Group Radio Access Network.

[2] Gallager, Robert G. Low-Density Parity-Check Codes, Cambridge, MA, MIT Press, 1963.

[3] Hocevar, D.E. "A reduced complexity decoder architecture via layered decoding of LDPC codes." In IEEE Workshop on Signal Processing Systems, 2004. SIPS 2004. doi: 10.1109/SIPS.2004.1363033

[4] Chen, Jinghu, R.M. Tanner, C. Jones, and Yan Li. "Improved min-sum decoding algorithms for irregular LDPC codes." In Proceedings. International Symposium on Information Theory, 2005. ISIT 2005. doi: 10.1109/ISIT.2005.1523374

拡張機能

すべて展開する

バージョン履歴

R2018b で導入

すべて展開する