exponenta event banner

nrPolarEncode

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

Описание

пример

enc = nrPolarEncode(in,E) возвращает результат полярного кодирования для входного сообщения in и согласованная по скорости длина выхода E согласно ТУ 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
      ⋮

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

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

Создайте канал, который добавляет белый гауссов шум (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 ≤ К ≤ 25, E должно находиться в диапазоне K + 3 < E ≤ 8192.

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

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

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

  • Для конфигурации DL укажите 9.

  • Для конфигурации UL укажите 10.

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

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

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

  • Для конфигурации DL укажите true.

  • Для конфигурации UL укажите false.

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

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

свернуть все

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

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

  • Для конфигурации DL, N ≤ 512.

  • Для конфигурирования UL, N ≤ 1024.

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

Ссылки

[1] 3GPP TS 38.212. "НР; мультиплексирование и канальное кодирование. "Проект партнерства 3-го поколения; Техническая спецификация на сеть радиодоступа Группы..

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

Создание кода C/C + +
Создайте код C и C++ с помощью MATLAB ® Coder™

.
Представлен в R2018b