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, соответственно.

Примеры

свернуть все

Выполните полярное кодирование случайного сообщения длины KE задает продолжительность соответствующего уровню выхода, который отличается от длины закодированного сообщения 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
      ⋮

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

Начальная настройка

Создайте канал, который добавляет белый Гауссов шум (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

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

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

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

Если N длина полярно закодированного сообщения в битах, затем N2nmax. Смотрите, что TS 38.212 разделяет 5.3.1.2 [1].

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

Введите перемежение в виде true или false.

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

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

Типы данных: логический

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

свернуть все

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

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

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

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

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

Ссылки

[1] 3GPP TS 38.212. “NR; Мультиплексирование и кодирование канала”. Проект Партнерства третьего поколения; Сеть радиодоступа Technical Specification Group..

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

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

Введенный в R2018b