nrPolarDecode

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

Описание

пример

decbits = nrPolarDecode(rec,K,E,L) декодирует восстановленный со скоростью вход rec для (N, K) полярный код, где N - длина rec и K - длина декодированных бит decbits, как указано в TS 38.212 Раздел 5 [1]. Функция использует декодер списка последовательной отмены циклической проверки избыточности (CRC) длиной L. По умолчанию выходное перемежение разрешено, максимальная длина входа равна 512, и количество добавленных бит CRC равно 24. Используйте этот синтаксис для строения нисходящего канала.

decbits = nrPolarDecode(rec,K,E,L,padCRC) определяет, был ли информационный блок на передающей стороне добавлен с таковыми до кодирования CRC.

decbits = nrPolarDecode(rec,K,E,L,padCRC,rnti) задает временный идентификатор радиосети (RNTI). Можно использовать этот синтаксис, когда значение rnti маскирует биты четности CRC на передающем конце.

decbits = nrPolarDecode(rec,K,E,L,nmax,iil,CRClen) декодирует вход с заданной максимальной длиной 2nmax , выходное перемежение, заданное iil, и количество добавленных бит CRC, заданное как CRClen. Этот синтаксис принимает, что информационный блок на конце передачи не был добавлен с таковыми до кодирования CRC и что RNTI равен 0.

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

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

Примеры

свернуть все

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

Начальный 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

Переданные и принятые сообщения идентичны.

Входные параметры

свернуть все

Восстановленный по скорости вход, заданный как вектор-столбец действительных значений. Область входа rec представляет логарифмические коэффициенты логарифмической правдоподобности на бит с отрицательным биполярным отображением. Итак, 0 сопоставлен с 1, и 1 сопоставлен с -1. Длина rec должно быть степенью двойки.

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

Длина информационного блока в битах, заданная как положительное целое число. K включает биты CRC, если применимо.

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

Согласованная со скоростью выходная длина в битах, заданная как положительное целое число.

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

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

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

Длина списка декодирования, заданная как степень двойки.

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

Предварительная добавка перед кодировкой CRC, заданная как false или true. Задайте padCRC на true если информационный блок на передающей стороне перед полярным кодированием был предварительно добавлен со всеми таковыми до кодирования CRC.

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

RNTI UE, заданный в виде целого числа от 0 до 65 535.

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

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

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

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

Если N - длина rec в битах, N ≤ 2nmax, см. раздел 5.3.1.2 ТС 38.212.

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

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

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

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

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

Количество добавленных бит CRC, заданное как 24, 11, или 6.

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

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

Числа 24, 11 и 6 соответствуют полиномам gCRC24C, gCRC11 и gCRC6, соответственно, как описано в TS 38.212. Раздел 5.1 [1].

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

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

свернуть все

Декодированное сообщение, возвращенное как K-by-1 вектора-столбца двоичных значений.

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

Вопросы совместимости

расширить все

Поведение изменено в R2020a

Ссылки

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

[2] Tal, I. and Vardy, A., «List decoding of Polar Codes», IEEE Transactions on Information Theory. Том 61, № 5, стр. 2213-2226, май 2015.

[3] Niu, K., and Chen, K., «CRC-Aided Decoding of Polar Codes», IEEE Communications Letters, Vol. 16, No. 10, pp. 1668-1671, Oct. 2012.

[4] Stimming, A. B., Parizi, M. B. and Burg, A., «LLR-based Seprectional Cancellation List Decoding of Polar Codes», Транзакция IEEE по обработке сигналов, Vol. 63, No. 19, p.5165-5115

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

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