nrPUSCHDecode

Декодируйте символы модуляции PUSCH

Синтаксис

[cw,symbols] = nrPUSCHDecode(sym,mod,nid,rnti)
[cw,symbols] = nrPUSCHDecode(___,nVar)
[cw,symbols] = nrPUSCHDecode(___,transformPrecode,mrb)
[cw,symbols] = nrPUSCHDecode(___,txScheme,nLayers,tpmi)

Описание

пример

[cw,symbols] = nrPUSCHDecode(sym,mod,nid,rnti) возвращает мягкие биты cw и символы совокупности symbols, следующий из обратной операции физического восходящего канала совместно использованный канал (PUSCH), обрабатывающий от Раздела TS 38.211 6.3.1 [1]. Декодирование состоит из слоя demapping, демодуляции символов sym со схемой mod модуляции, и дескремблирующий с борющейся идентичностью nid. Вход rnti является радиосетью временным идентификатором (RNTI) оборудования пользователя (UE). Эта функция выполняет данные, дескремблирующие только. Поскольку местоположения бита заполнителя восходящей управляющей информации (UCI) неизвестны, функция не может правильно дескремблировать UCIs если существующий во входе.

[cw,symbols] = nrPUSCHDecode(___,nVar) задает шумовой масштабный коэффициент отклонения мягких битов в демодуляции PUSCH в дополнение к входным параметрам в первом синтаксисе.

[cw,symbols] = nrPUSCHDecode(___,transformPrecode,mrb) задает преобразовывают deprecoding как логическое значение и количество выделенных блоков ресурса PUSCH. Задайте эти входные параметры в дополнение к входным параметрам во втором синтаксисе. Когда transformPrecode установлен в true, функция применяет инверсию предварительного кодирования преобразования, заданного в Разделе TS 38.211 6.3.1.4. mrb задает выделенное количество блоков ресурса PUSCH.

пример

[cw,symbols] = nrPUSCHDecode(___,txScheme,nLayers,tpmi) задает схему передачи в дополнение к входным параметрам в третьем синтаксисе. Когда txScheme установлен в 'codebook', функция выполняет мультивход мультивыводится (MIMO) deprecoding на основе конкретного количества слоев nLayers передачи и переданного предварительно кодирующего матричного индикатора (TPMI) tpmi.

Примеры

свернуть все

Задайте случайную последовательность двоичных значений, соответствующих кодовой комбинации 8 064 битов.

cw = randi([0 1],8064,1);

Используя 256-QAM модуляцию, сгенерируйте символы модуляции PUSCH для заданного личного номера ячейки физического уровня, RNTI и двух слоев передачи. По умолчанию эта функция отключает, преобразовывают предварительное кодирование и основанную на некниге шифров передачу.

modulation = '256QAM';
nlayers = 2;
ncellid = 17;
rnti = 111;
sym = nrPUSCH(cw,modulation,nlayers,ncellid,rnti)
sym = 504×2 complex

  -0.9971 - 0.8437i   0.0767 + 0.2301i
   0.3835 + 0.2301i   0.9971 - 0.5369i
  -0.3835 - 1.1504i  -0.3835 + 0.9971i
   0.5369 + 0.0767i  -0.9971 + 0.8437i
   1.1504 - 0.9971i  -0.8437 - 0.6903i
  -0.6903 + 0.0767i   1.1504 - 0.3835i
   0.8437 + 0.6903i   1.1504 + 0.2301i
  -0.6903 - 0.2301i  -0.8437 + 1.1504i
   0.0767 + 0.8437i  -0.0767 + 0.6903i
   0.3835 - 0.8437i   0.3835 + 0.9971i
      ⋮

Декодируйте символы модуляции PUSCH.

demod = nrPUSCHDecode(sym,modulation,ncellid,rnti)
demod = 8064×1
1010 ×

   -1.1529
   -0.8471
    0.2118
   -0.0941
   -0.0235
    0.0235
    0.0235
   -0.0235
   -0.0235
   -0.0941
      ⋮

Выполните трудное решение относительно мягкой метрики.

rxcw = double(demod<0)
rxcw = 8064×1

     1
     1
     0
     1
     1
     0
     0
     1
     1
     1
      ⋮

Сравните результат с исходной кодовой комбинацией.

isequal(cw,rxcw)
ans = logical
   1

Задайте случайную последовательность двоичных значений, соответствующих кодовой комбинации 8 064 битов.

cw = randi([0 1],8064,1);

Используя модуляцию QPSK, сгенерируйте символы модуляции PUSCH для заданного личного номера ячейки физического уровня, RNTI, пропускной способности и одного слоя передачи. Включите преобразовывают предварительное кодирование и основанную на книге шифров передачу на основе заданной пропускной способности PUSCH, TPMI и четырех антенн.

modulation = 'QPSK';
ncellid = 17;
rnti = 111;
nlayers = 1;
transformPrecode = true;
txScheme = 'codebook';
mrb = 6;
tpmi = 1;
nports = 4;
sym = nrPUSCH(cw,modulation,nlayers,ncellid,rnti,transformPrecode,mrb,txScheme,nports,tpmi)
sym = 4032×4 complex

   0.0000 + 0.0000i  -0.1667 + 0.0833i   0.0000 + 0.0000i   0.0000 + 0.0000i
   0.0000 + 0.0000i  -0.0632 - 0.2911i   0.0000 + 0.0000i   0.0000 + 0.0000i
   0.0000 + 0.0000i  -0.1519 - 0.0450i   0.0000 + 0.0000i   0.0000 + 0.0000i
   0.0000 + 0.0000i   0.3677 + 0.3664i   0.0000 + 0.0000i   0.0000 + 0.0000i
   0.0000 + 0.0000i  -0.3079 - 0.5027i   0.0000 + 0.0000i   0.0000 + 0.0000i
   0.0000 + 0.0000i  -0.8082 - 0.1640i   0.0000 + 0.0000i   0.0000 + 0.0000i
   0.0000 + 0.0000i  -0.0640 - 0.2388i   0.0000 + 0.0000i   0.0000 + 0.0000i
   0.0000 + 0.0000i   0.3936 - 0.4160i   0.0000 + 0.0000i   0.0000 + 0.0000i
   0.0000 + 0.0000i   0.0851 - 0.4625i   0.0000 + 0.0000i   0.0000 + 0.0000i
   0.0000 + 0.0000i   0.0345 - 0.3333i   0.0000 + 0.0000i   0.0000 + 0.0000i
      ⋮

Декодируйте символы модуляции PUSCH, принимающие нулевое шумовое отклонение.

nVar = 0;
demod = nrPUSCHDecode(sym,modulation,ncellid,rnti,nVar,transformPrecode,mrb,txScheme,nlayers,tpmi)
demod = 8064×1
1010 ×

   -2.0000
   -2.0000
    2.0000
   -2.0000
   -2.0000
    2.0000
    2.0000
   -2.0000
   -2.0000
   -2.0000
      ⋮

Выполните трудное решение относительно мягкой метрики.

rxcv = double(demod<0)
rxcv = 8064×1

     1
     1
     0
     1
     1
     0
     0
     1
     1
     1
      ⋮

Сравните результат с исходной кодовой комбинацией.

isequal(cw,rxcv)
ans = logical
   1

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

свернуть все

Полученные символы модуляции PUSCH, заданные как комплексная матрица.

Типы данных: single | double
Поддержка комплексного числа: Да

Схема Modulation, заданная как 'pi/2-BPSK', 'QPSK', '16QAM', '64QAM' или '256QAM'. Эта схема модуляции определяет тип модуляции и количество битов, используемых на символ модуляции.

Схема модуляцииКоличество битов на символ
'pi/2-BPSK'1
'QPSK'2
'16QAM'4
'64QAM'6
'256QAM'8

Типы данных: char | string

Скремблирование идентичности, заданной как целое число от 0 до 1 023. nid является более высоким параметром слоя dataScramblingIdentityPUSCH, в пределах от от 0 до 1 023, если более высокий параметр слоя сконфигурирован. В противном случае nid является личным номером ячейки физического уровня NCellID, в пределах от от 0 до 1 007. Для получения дополнительной информации смотрите Раздел TS 38.211 6.3.1.1.

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

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

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

Шумовое отклонение, заданное в виде неотрицательного числа. Мягкие биты масштабируются с отклонением аддитивного белого гауссова шума (AWGN). Значение по умолчанию соответствует ОСШ 100 дБ, приходя к модульной власти сигнала.

Примечание

Значение по умолчанию принимает, что декодер и кодер соединяются спина к спине, где шумовое отклонение является нулем. Чтобы избежать -Inf или значений +Inf в выводе, функция использует 1e-10 в качестве значения по умолчанию для шумового отклонения. Чтобы получить соответствующие результаты, когда сигнал будет передан через шумный канал, настройте шумовое отклонение соответственно.

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

Преобразуйте deprecoding, заданный как false или true. Для получения дополнительной информации смотрите Раздел TS 38.211 6.3.1.4.

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

Количество выделенных блоков ресурса PUSCH, заданных как целое число от 1 до 275. Для получения дополнительной информации смотрите Раздел TS 38.214 6.1.2.

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

Схема Transmission, заданная как одно из этих значений:

  • 'nonCodebook' — Используйте эту опцию, чтобы отключить MIMO deprecoding.

  • 'codebook' — Используйте эту опцию для основанной на книге шифров передачи с помощью MIMO deprecoding.

Для получения дополнительной информации смотрите Раздел TS 38.211 6.3.1.4.

Типы данных: char | string

Количество слоев передачи, заданных как целое число от 1 до 4. Для получения дополнительной информации смотрите Раздел TS 38.211 6.3.1.3.

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

Переданный предварительно кодирующий матричный индикатор, заданный как целое число от 0 до 27. Допустимая область значений tpmi зависит от конкретного количества слоев nLayers передачи и количества портов. Для получения дополнительной информации см. таблицы 6.3.1.5-1 TS 38.211 к 6.3.1.5-7.

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

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

свернуть все

Аппроксимированное логарифмическое отношение правдоподобия (LLR) мягкие биты, возвращенные как действительный вектор-столбец. cw наследовал тип данных sym. Знак представляет твердые биты.

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

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

Типы данных: double | single
Поддержка комплексного числа: Да

Ссылки

[1] 3GPP TS 38.211. “NR; Физические каналы и модуляция”. Проект Партнерства третьего поколения; Сеть радиодоступа Technical Specification Group.

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

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

Смотрите также

Функции

Введенный в R2019a