nrPolarEncode

Полярное кодирование

Описание

пример

enc = nrPolarEncode(in,E) возвращает полярно-кодированный выход для входа сообщения in и согласованную со скоростью выходную длину E как указано в TS 38.212 Раздел 5 [1]. По умолчанию входное перемежение включено, и максимальная длина закодированного сообщения составляет 512. Используйте этот синтаксис для строения нисходящего канала.

enc = nrPolarEncode(in,E,nmax,iil) кодирует вход с заданной максимальной длиной 2nmax и входное перемежение, заданное iil.

  • Для строения нисходящего канала (DL) допустимые значения для nmax и iil Это 9 и true, соответственно.

  • Для строения восходящего канала (UL) допустимые значения для nmax и iil 10 и false, соответственно.

Примеры

свернуть все

Выполните полярное кодирование случайного сообщения длины K. E задает длину выхода, соответствующего скорости, которая отличается от длины закодированного сообщения enc. Длина enc всегда является степенью двойки.

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
      ⋮

Передают полярно-кодированный блок данных и декодируют его с помощью декодера списка последовательной отмены.

Начальный Setup

Создайте канал, который добавляет белый Гауссов шум (WGN) к входному сигналу. Установите отклонение шума равным 1,5.

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

Создайте модулятор фазы сдвига ключами (BSPK) и демодулятор.

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

Симулируйте систему координат

Выполните полярное кодирование случайного сообщения длины K. Согласованный по скорости выход имеет длину E.

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

Модулируйте полярные закодированные данные с помощью BSPK-модуляции, добавьте WGN и демодулируйте.

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

Выполните полярное декодирование, используя декодер списка последовательной отмены длины L.

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 зависит от K, длины входного сообщения in.

  • Если 18 ≤ K ≤ 25, E должно находиться в области значений K + 3 < E ≤ 8192.

  • Если K > 30, E должно находиться в области значений K < E ≤ 8192.

Типы данных: double

Base-2 логарифм максимальной длины закодированного сообщения, заданный как 9 или 10.

  • Для строения DL задайте 9.

  • Для строения UL задайте 10.

Если N - длина полярно-кодированного сообщения в битах, затем N ≤ 2nmax. См. ТС 38.212 раздел 5.3.1.2 [1].

Типы данных: double

Входное перемежение, заданное как true или false.

  • Для строения DL задайте true.

  • Для строения UL задайте false.

Типы данных: logical

Выходные аргументы

свернуть все

Полярно-кодированное сообщение, возвращаемое как вектор-столбец с двоичными значениями. enc наследует тип данных из входа сообщения in.

Длина полярно-кодированного сообщения, N, является степенью двойки. Для получения дополнительной информации см. раздел 5.3.1 ТУ 38.212.

  • Для строения DL, N ≤ 512.

  • Для строения UL, N ≤ 1024.

Типы данных: double | int8

Ссылки

[1] 3GPP TS 38.212. "NR; Мультиплексирование и канальное кодирование. "3rd Генерация Partnership Project; Группа технических спецификаций Радиосеть доступ..

Расширенные возможности

Генерация кода C/C + +
Сгенерируйте код C и C++ с помощью Coder™ MATLAB ®

.
Введенный в R2018b