Main Content

nrPolarEncode

説明

enc = nrPolarEncode(in,E) は、TS 38.212 の Section 5 [1]で規定されているように、入力メッセージ in の Polar 符号化出力およびレートマッチ後の出力長 E を返します。既定では、入力インターリーブが有効で、符号化されたメッセージの最大長が 512 です。この構文をダウンリンク構成に使用します。

enc = nrPolarEncode(in,E,nmax,iil) は、指定された最大長 2nmax の入力と、iil で指定された入力インターリーブを符号化します。

  • ダウンリンク (DL) 構成の場合、nmaxiil の有効値はそれぞれ 9 と true

  • アップリンク (UL) 構成の場合、nmaxiil の有効値はそれぞれ 10 と false

すべて折りたたむ

長さ K のランダム メッセージの Polar 符号化を実行します。E は、符号化メッセージ enc の長さとは異なるレートマッチ後の出力長を指定します。enc の長さは常に 2 のべき乗です。

K = 132;
E = 300;
msg = randi([0 1],K,1,'int8');
enc = nrPolarEncode(msg,E)
enc = 512x1 int8 column vector

   0
   0
   0
   0
   0
   0
   1
   1
   1
   0
      ⋮

データの Polar 符号化ブロックを送信し、逐次除去リスト復号器を使用して復号化します。

初期設定

入力信号にホワイト ガウス ノイズ (WGN) を追加するチャネルを作成します。ノイズ分散を 1.5 に設定します。

nVar = 1.5; 
chan = comm.AWGNChannel('NoiseMethod','Variance','Variance',nVar);

2 位相シフト キーイング (BSPK) の変調器と復調器を作成します。

bpskMod = comm.BPSKModulator;
bpskDemod = comm.BPSKDemodulator('DecisionMethod', ...
    'Approximate log-likelihood ratio','Variance',nVar);

フレームのシミュレーション

長さ K のランダム メッセージの Polar 符号化を実行します。レートマッチ後の出力は、長さ E です。

K = 132;
E = 256;
msg = randi([0 1],K,1,'int8');
enc = nrPolarEncode(msg,E);

BSPK 変調を使用して Polar 符号化データを変調し、WGN を追加して、復調します。

mod = bpskMod(enc);
rSig = chan(mod);
rxLLR = bpskDemod(rSig); 

長さ L の逐次除去リスト復号器を使用して Polar 復号化を実行します。

L = 8;
rxBits = nrPolarDecode(rxLLR,K,E,L);

ビット誤り数を求めます。

numBitErrs = biterr(rxBits,msg);
disp(['Number of bit errors: ' num2str(numBitErrs)])
Number of bit errors: 0

送信メッセージと受信メッセージは同一です。

入力引数

すべて折りたたむ

入力メッセージ。バイナリ値の列ベクトルとして指定します。in には、CRC ビットが含まれます (該当する場合)。

データ型: double | int8

レートマッチ後の出力長 (ビット単位)。正の整数として指定します。E は、入力メッセージ in の長さ K によって異なります。

  • 18 ≤ K ≤ 25 の場合、E は K + 3 < E ≤ 8192 の範囲内でなければならない。

  • K > 30 の場合、E は K < E ≤ 8192 の範囲内でなければならない。

データ型: double

符号化済みメッセージの最大長の基底 2 の対数。9 または 10 として指定します。

  • DL 構成では 9 を指定。

  • UL 構成では 10 を指定。

N がビット単位の Polar 符号化メッセージの長さである場合、N2nmax になります。TS 38.212 の Section 5.3.1.2 [1]を参照してください。

データ型: double

入力インターリーブ。true または false として指定します。

  • DL 構成では true を指定。

  • UL 構成では false を指定。

データ型: logical

出力引数

すべて折りたたむ

Polar 符号化メッセージ。バイナリ値の列ベクトルとして返されます。enc は、入力メッセージ in からデータ型を継承します。

Polar 符号化メッセージの長さ N は 2 のべき乗でなければなりません。詳細については、TS 38.212 の Section 5.3.1 を参照してください。

  • DL 構成では N ≤ 512。

  • UL 構成では N ≤ 1024。

データ型: double | int8

参照

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

拡張機能

C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。

バージョン履歴

R2018b で導入