nrPUSCHDecode

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

Описание

пример

[cw,symbols] = nrPUSCHDecode(sym,mod,nid,rnti) возвращает мягкие биты cw и символы созвездия symbols в результате обратной операции обработки физического восходящего общего канала (PUSCH) из TS 38.211 Раздел 6.3.1 [1]. Декодирование состоит из демодуляции слоев, демодуляции символов sym со схемой модуляции mod, и дескремблирование с скремблированием тождеств nid. Область входа rnti является временным идентификатором радиосети (RNTI) пользовательского оборудования (UE). multi-input multi-output (MIMO) амортизация и преобразование амортизации отключены. Когда вы используете этот синтаксис, функция принимает, что входные символы содержат только символы данных.

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

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

пример

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

пример

[cw,symbols] = nrPUSCHDecode(carrier,pusch,sym,nVar) возвращает мягкие биты cw и символы созвездия symbols для заданного строения поставщика услуг carrier и строение PUSCH pusch. Область входа sym - принятые символы PUSCH для каждого слоя и nVar задает коэффициент масштабирования отклонения шума для мягких бит. Когда вы используете этот синтаксис с предварительным кодированием преобразования, функция принимает, что входные символы содержат данные и символы PT-RS (если применимо) и использует только символы данных для дальнейшей обработки.

пример

[cw,symbols] = nrPUSCHDecode(carrier,pusch,tcr,tbs,oack,ocsi1,ocsi2,sym,nVar) задает целевую скорость кода tcr, размер транспортного блока tbsи управляющую информацию восходящей линии связи. oack - длина полезной нагрузки гибридного автоматического запроса на повторное подтверждение (HARQ-ACK). ocsi1 - длина полезной нагрузки части 1 информации о состоянии канала (CSI). ocsi2 - длина полезной нагрузки CSI-части 2. Когда вы используете этот синтаксис с предварительным кодированием преобразования, функция принимает, что входные символы содержат данные и символы PT-RS (если применимо), и использует только символы данных для дальнейшей обработки. Функция также обрабатывает заполнители UCI при дескремблировании.

Примеры

свернуть все

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

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

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

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

Создайте объект строения поставщика услуг с тождествами камеры физического слоя как 42.

carrier = nrCarrierConfig;
carrier.NCellID = 42;

Создайте объект строения PUSCH с этими свойствами.

pusch = nrPUSCHConfig;
pusch.Modulation = '256QAM';
pusch.NumLayers = 2;
pusch.RNTI = 111;
pusch.TransformPrecoding = 0;
pusch.TransmissionScheme = 'nonCodebook';
pusch.NID = []; % Use empty to be equal to NCellID of carrier
pusch.NSizeBWP = 25;
pusch.NStartBWP = 10;
pusch.PRBSet = 0:pusch.NSizeBWP-1; % Occupy entire bandwidth part

Сгенерируйте символы PUSCH для одного кодового слова 8064 биты с заданным строением несущей и строением общего канала восходящей линии связи.

cw = randi([0 1],8064,1);
sym = nrPUSCH(carrier,pusch,cw)
sym = 504×2 complex

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

Добавьте добавку белого Гауссова шума (AWGN) к символам PUSCH. Затем демодулируйте, чтобы получить мягкие битовые оценки.

SNR = 30; % SNR in dB
rxsym = awgn(sym,SNR);
demod = nrPUSCHDecode(carrier,pusch,rxsym)
demod = 8064×1
1010 ×

   -0.2106
   -0.8118
    0.0949
   -0.0824
   -0.0231
    0.0294
    0.0239
   -0.0176
   -1.4404
   -0.1963
      ⋮

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

rxcw = double(demod<0);

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

isequal(cw,rxcw)
ans = logical
   1

Создайте объект строения поставщика услуг с интервалом между поднесущими 15 кГц и пропускной способностью передачи 10 МГц.

carrier = nrCarrierConfig;
carrier.SubcarrierSpacing = 15;
carrier.CyclicPrefix = 'normal';
carrier.NSizeGrid = 52;

Создайте объект строения физического восходящего общего канала (PUSCH) со схемой модуляции QPSK и без скачкообразного изменения частоты. Установите коэффициент бета- смещения для гибридного автоматического подтверждения запроса повторения (HARQ-ACK) равным 20 и установите коэффициент бета- смещения для части 1 информации о состоянии канала (CSI) и части 2 CSI равным 6,5 каждый. Задайте коэффициент масштабирования 0,8, который ограничивает количество ресурсных элементов (RE), назначенных для UCI.

pusch = nrPUSCHConfig;
pusch.Modulation = 'QPSK';
pusch.FrequencyHopping = 'neither';
pusch.BetaOffsetACK = 20;
pusch.BetaOffsetCSI1 = 6.5;
pusch.BetaOffsetCSI2 = 6.5;
pusch.UCIScaling = 0.8;

Установите целевую скорость кода, длины полезной нагрузки данных общего канала восходящей линии связи (UL-SCH), HARQ-ACK, CSI часть 1 и CSI часть 2.

tcr = 0.65;   % Target code rate
tbs = 900;    % Payload length of UL-SCH data (transport block size)
oack = 1;     % Payload length of HARQ-ACK
ocsi1 = 55;   % Payload length of CSI part 1
ocsi2 = 72;   % Payload length of CSI part 2

Получите согласованные по скорости длины данных, HARQ-ACK, CSI часть 1 и CSI часть 2.

rmInfo = nrULSCHInfo(pusch,tcr,tbs,oack,ocsi1,ocsi2);

Создайте случайные биты полезной нагрузки для данных UL-SCH, HARQ-ACK, части 1 CSI и части 2 CSI.

data = randi([0 1],tbs,1);
ack  = randi([0 1],oack,1);
csi1 = randi([0 1],ocsi1,1);
csi2 = randi([0 1],ocsi2,1);

Создайте системный object™ энкодера UL-SCH.

encUL = nrULSCH;

Загрузите транспортный блок в энкодер UL-SCH.

setTransportBlock(encUL,data);

Получите закодированные биты длины rmInfo.GULSCH вызовом энкодера.

rv = 0;  % Redundancy version 0
culsch = encUL(pusch.Modulation,pusch.NumLayers,rmInfo.GULSCH,rv);

Закодируйте случайную полезную нагрузку HARQ-ACK, части 1 CSI и части 2 CSI для допустимых по скорости выходных длин, полученных из rmInfo структура.

cack  = nrUCIEncode(ack,rmInfo.GACK,pusch.Modulation);
ccsi1 = nrUCIEncode(csi1,rmInfo.GCSI1,pusch.Modulation);
ccsi2 = nrUCIEncode(csi2,rmInfo.GCSI2,pusch.Modulation);

Получите кодовое слово из закодированных бит UL-SCH и закодированных бит типов UCI.

[cw,info] = nrULSCHMultiplex(pusch,tcr,tbs,culsch,cack,ccsi1,ccsi2)
cw = 16224x1 int8 column vector

   0
   1
   0
   1
   1
   0
   0
   0
   0
   0
      ⋮

info = struct with fields:
    ULSCHIndices: [3244x1 uint32]
      ACKIndices: [338x1 uint32]
     CSI1Indices: [7252x1 uint32]
     CSI2Indices: [5390x1 uint32]
     UCIXIndices: [0x1 uint32]
     UCIYIndices: [169x1 uint32]

Получите символы PUSCH.

sym = nrPUSCH(carrier,pusch,cw);

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

rxcw = nrPUSCHDecode(carrier,pusch,tcr,tbs,oack,ocsi1,ocsi2,sym);

Проверяйте, что полученные мягкие биты равны в местоположениях, отличных от заполнителей UCI.

indNoPlaceHolder = setdiff(1:length(cw),[info.UCIXIndices;info.UCIYIndices]);
isequal(cw(indNoPlaceHolder),int8(rxcw(indNoPlaceHolder)<0))
ans = logical
   1

Демультиплексируйте кодированные UL-SCH и кодированные типы UCI из принятого кодового слова.

[rxculsch,rxcack,rxccsi1,rxccsi2] = nrULSCHDemultiplex(pusch,tcr,tbs,oack,ocsi1,ocsi2,rxcw);

Декодируйте биты UL-SCH.

decUL = nrULSCHDecoder;
decUL.TransportBlockLength = tbs;
decUL.TargetCodeRate = tcr;
[decULBits,blkErr] = decUL(rxculsch,pusch.Modulation,pusch.NumLayers,rv);

Декодируйте HARQ-ACK, CSI часть 1 и CSI часть 2 битах.

decack = nrUCIDecode(rxcack,oack,pusch.Modulation);
deccsi1 = nrUCIDecode(rxccsi1,ocsi1,pusch.Modulation);
deccsi2 = nrUCIDecode(rxccsi2,ocsi2,pusch.Modulation);

Проверьте декодированные биты UL-SCH, HARQ-ACK, части 1 CSI и части 2 CSI.

isequal(data,decULBits)
ans = logical
   1

isequal(decack,ack)
ans = logical
   1

isequal(deccsi1,csi1)
ans = logical
   1

isequal(deccsi2,csi2)
ans = logical
   1

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

свернуть все

Параметры конфигурации несущей для определенной нумерологии OFDM, заданные как nrCarrierConfig объект. Эта функция использует только эти nrCarrierConfig свойства объекта.

Тождества камеры физического слоя, заданный как целое число от 0 до 1007.

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

Интервалы между поднесущими в кГц, для всех каналов и опорных сигналов несущей, заданные как 15, 30, 60, 120, или 240.

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

Длина циклического префикса, заданная как один из следующих опций.

  • 'normal' - Используйте это значение, чтобы задать нормальный циклический префикс. Эта опция соответствует 14 символам OFDM в пазе.

  • 'extended' - Используйте это значение для задания расширенного циклического префикса. Эта опция соответствует 12 символам OFDM в пазе. Для нумераций, указанных в TS 38.211 Раздел 4.2, удлиненная длина циклического префикса применяется только для интервалов между поднесущими 60 кГц.

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

Количество RB в ресурсной сетке поставщика услуг, заданное в виде целого числа от 1 до 275. Значение по умолчанию 52 соответствует максимальному количеству RB несущей 10 МГц с 15 кГц SCS.

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

Запуск ресурсной сетки поставщика услуг связи относительно CRB 0, заданный в виде целого числа от 0 до 2199. Это свойство является параметром более высокого уровня offsetToCarrier.

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

Номер слота, заданный как неотрицательное целое число. Можно задать NSlot значение, больше, чем количество пазов на систему координат. Для примера можно задать это значение с помощью счетчиков цикла передачи в MATLAB® симуляция. В этом случае, возможно, вам придется убедиться, что значение свойства по модулю является количеством пазов на систему координат в коде вызова.

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

Параметры конфигурации PUSCH для определенной нумерологии OFDM, заданные как nrPUSCHConfig объект. Эта функция использует только эти nrPUSCHConfig свойства объекта.

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

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

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

Количество слоев передачи, заданное как 1, 2, 3, или 4.

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

Тип отображения физического общего канала, заданный как 'A' или 'B'.

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

Выделение символа OFDM физического общего канала, заданное как двухэлементный вектор неотрицательных целых чисел. Первый элемент этого свойства представляет начало выделения символа (на основе 0). Второй элемент представляет количество выделенных символов OFDM.

Когда вы устанавливаете это свойство на [] или второго элемента вектора, для 0, для канала не выделен символ.

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

Выделение физического ресурсного блока (PRB) PUSCH в BWP, заданное как вектор целых чисел от 0 до 274.

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

Прекодирование преобразования, заданное как одно из следующих значений.

  • 0 (false) - Отключить предварительное кодирование преобразования. Тип формы волны является циклически-префиксным ортогональным частотным делением мультиплексированием (CP-OFDM).

  • 1 (true) - Включите предварительное кодирование преобразования. Тип формы волны является дискретным ортогональным частотным делением преобразования Фурье (DFT-s-OFDM).

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

Схема трансмиссии PUSCH, заданная как 'nonCodebook' или 'codebook'.

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

Переданный матричный индикатор предварительного кодирования, заданный в виде целого числа от 0 до 27.

Зависимости

Это свойство применимо только при TransmissionScheme установлено в 'codebook'.

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

Скачкообразная перестройка частоты для физического общего канала восходящей линии связи, заданная как 'neither', 'intraSlot', или 'interSlot'.

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

Коэффициент смещения беты HARQ-ACK, заданный как положительное целое число. Это свойство определяет количество ресурсов для мультиплексирования HARQ-ACK. Номинальное значение является одним из значений из таблицы 9.3-1 TS 38.213.

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

Коэффициент смещения беты части 1 информации о состоянии канала (CSI), заданный как положительное целое число. Это свойство определяет количество ресурсов для мультиплексирования части 1 CSI. Номинальное значение является одним из значений из таблицы 9.3-2 TS 38.213.

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

Коэффициент смещения беты части 2 CSI, заданный как положительное целое число. Это свойство определяет количество ресурсов для мультиплексирования CSI части 2. Номинальное значение является одним из значений из таблицы 9.3-2 TS 38.213.

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

Масштабный коэффициент для ограничения количества ресурсных элементов, выделенных для UCI на PUSCH, заданный как скаляр между 0 и 1. Номинальное значение 0,5, 0,65, 0,8 или 1.

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

Скремблирующие тождества, заданный как целое число от 0 до 1023. Использование [] чтобы задать это свойство в NCellID свойство nrCarrierConfig объект.

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

Временный идентификатор радиосети пользовательского оборудования (UE), заданный в виде целого числа от 0 до 65 535.

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

Параметры конфигурации PUSCH DM-RS, заданные как nrPUSCHDMRSConfig объект. Эта функция использует только эти nrPUSCHDMRSConfig свойства.

Тип строения DM-RS, заданный как 1 или 2. Это свойство является параметром более высокого уровня dmrs-Type.

Это значение свойства должно быть 1 когда nrPUSCHDMRSConfig является свойством nrPUSCHConfig с TransformPrecoding значение свойства установлено в 1.

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

Положение первого символа OFDM DM-RS, обеспечиваемого параметром более высокого слоя dmrs-TypeA-Position, заданное как 2 или 3.

Это свойство применимо при nrPUSCHDMRSConfig является свойством nrPUSCHConfig объект с MappingType значение свойства установлено в 'A'.

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

Максимальное количество дополнительных положений DM-RS, заданное как 0, 1, 2, или 3. Это свойство является параметром более высокого слоя dmrs-AdditionalPosition.

Это значение свойства должно быть 0 или 1 когда nrPUSCHDMRSConfig является свойством nrPUSCHConfig объект с FrequencyHopping значение свойства установлено в 'intraSlot'.

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

Количество последовательных символов OFDM с передней загрузкой DM-RS, заданное как 1 (односимвольный DM-RS) или 2 (double-symbol DM-RS).

Это значение свойства должно быть 1 когда nrPUSCHDMRSConfig является свойством nrPUSCHConfig объект с FrequencyHopping значение свойства установлено в 'intraSlot'.

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

Местоположения символов OFDM DM-RS, которые основаны на 0, заданы как один из следующих опций.

  • Целое число от 0 до 13 - Для одного символа DM-RS

  • Вектор неотрицательных целых чисел от 0 до 13 - Для нескольких символов DM-RS

Каждое местоположение входного символа принято как односимвольное DM-RS в пределах выделения символа физического общего канала.

Значение по умолчанию, [], соответствует расположению символов ДМ-РС согласно ТС 38.211 Таблица 6.4.1.1.3-3, 6.4.1.1.3-4 или 6.4.1.1.3-6 [1]. Установка этого свойства переопределяет соответствующие местоположения символов DM-RS в этих стандартных интерполяционных таблицах.

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

Порты антенны DM-RS, заданные в качестве одного из следующих опций.

  • Целое число от 0 до 11 - Для одного порта антенны

  • Вектор неотрицательных целых чисел от 0 до 11 - Для нескольких портов антенны

Номинальные поддерживаемые порты антенны зависят от DMRSLength и DMRSConfigurationType значения свойств, как показано в этой таблице.

DMRSLength ЗначениеDMRSConfigurationType ЗначениеНоминальная область значений поддерживаемых портов антенны
11[0, 3]
2[0, 5]
21[0, 7]
2[0, 11]

Значение по умолчанию [] подразумевает, что порт антенны DM-RS равен 0.

Когда nrPUSCHDMRSConfig является свойством nrPUSCHConfig объект, [] подразумевает, что DMRSPortSet находится в области значений от 0 до NumLayers–1.

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

Количество групп CDM DM-RS без данных, заданное как 1, 2, или 3.

Каждое значение указывает разный набор номеров групп CDM в соответствии с TS 38.214 Раздел 6.2.2 [2].

  • 1 - номер группы CDM 0

  • 2 - номера групп CDM 0 и 1

  • 3 - номера групп CDM 0, 1 и 2

Когда TransformPrecoding свойство nrPUSCHConfig для объекта задано значение 1, это значение свойства должно быть 2.

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

Включите PT-RS, заданное в качестве одного из следующих значений.

  • 0 (false) - Отключите строение PT-RS.

  • 1 (true) - Включите строение PT-RS.

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

PUSCH PT-RS строение, заданная как nrPUSCHPTRSConfig объект. Эта функция использует только эти nrPUSCHPTRSConfig свойства.

Временная плотность PT-RS, заданная как 1, 2 или 4. Это свойство является более высоким параметром слоя timeDensity.

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

Частотная плотность PT-RS, заданная как 2 или 4. Это свойство является более высоким параметром слоя frequencyDensity.

Зависимости

Это свойство применяется только тогда, когда nrPUSCHPTRSConfig является свойством nrPUSCHConfig с TransformPrecoding установлено на 0.

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

Набор портов антенны PT-RS, заданный как двухэлементный вектор неотрицательных целых чисел. Задайте [] чтобы задать это свойство как самое низкое значение в DMRSPortSet свойство nrPUSCHDMRSConfig объект. Это использование [] значение применимо только тогда, когда nrPUSCHDMRSConfig объект используется как свойство nrPUSCHConfig объект.

Зависимости

Это свойство применяется только тогда, когда nrPUSCHPTRSConfig является свойством nrPUSCHConfig с TransformPrecoding установлено на 0.

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

Количество выборок PT-RS на группу PT-RS, заданное как 2 или 4. Это свойство является параметром более высокого слоя sampleDensity.

Зависимости

Это свойство применяется только тогда, когда nrPUSCHPTRSConfig является свойством nrPUSCHConfig с TransformPrecoding установлено на 1.

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

Количество групп PT-RS, заданное как 2, 4, или 8. Это свойство является параметром более высокого слоя sampleDensity.

Когда для этого свойства задано значение 8, количество выборок PT-RS, установленных NumPTRSSamples для свойства должно быть задано значение 4.

Зависимости

Это свойство применяется только тогда, когда nrPUSCHPTRSConfig является свойством nrPUSCHConfig с TransformPrecoding установлено на 1.

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

Смещение ресурсного элемента, заданное как '00', '01', '10', или '11'. Это свойство является параметром более высокого слоя resourceElementOffset.

Зависимости

Это свойство применяется только тогда, когда nrPUSCHPTRSConfig является свойством nrPUSCHConfig с TransformPrecoding установлено на 0.

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

Целевая скорость кода для кодового слова в передаче UL-SCH, заданная в виде скаляра в области значений (0, 1).

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

Размер транспортного блока, сопоставленный с кодовым словом в передаче UL-SCH, задается как неотрицательное целое число. Значение 0 указывает на отсутствие транспортного блока или на отсутствие передачи UL-SCH на PUSCH.

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

Длина полезной нагрузки бит HARQ-ACK, заданная как неотрицательное целое число. Значение 0 указывает на отсутствие передачи HARQ-ACK.

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

Длина полезной нагрузки CSI-части 1 бит, заданная в виде неотрицательного целого числа. Значение 0 указывает на отсутствие передачи CSI части 1.

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

Длина полезной нагрузки CSI-части 2 бит, заданная в виде неотрицательного целого числа. Значение 0 указывает на отсутствие передачи CSI часть 2. Номинально CSI часть 2 присутствует только, когда CSI часть 1 присутствует.

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

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

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

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

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

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

Скремблирующие тождества, заданный как целое число от 0 до 1023. nid более высокий слой параметра dataScramblingIdentityPUSCH, в диапазоне от 0 до 1023, если сконфигурирован параметр более высокого слоя. В противном случае nid - идентификационный номер камеры физического слоя NCellID в диапазоне от 0 до 1007. Для получения дополнительной информации см. раздел 6.3.1.1 ТУ 38.211.

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

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

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

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

Примечание

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

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

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

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

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

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

Схема передачи, заданная в качестве одного из следующих значений:

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

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

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

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

Количество слоев передачи, заданное в виде целого числа от 1 до 4. Для получения дополнительной информации см. раздел 6.3.1.3 ТУ 38.211.

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

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

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

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

свернуть все

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

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

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

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

Ссылки

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

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

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

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