exponenta event banner

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) и преобразование deascoding отключены. При использовании этого синтаксиса функция предполагает, что входные символы содержат только символы данных.

[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 part 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, часть 1 CSI и часть 2 CSI.

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, CSI части 1 и CSI части 2 для выходных длин, согласованных по скорости, полученных из 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, CSI-части 1 и CSI-части 2.

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 МГц с SCS 15 кГц.

Типы данных: 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 ТУ 38.213.

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

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

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

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

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

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

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

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

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

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

Типы данных: 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-AdditityPosition.

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

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

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

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

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

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

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

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

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

Значение по умолчанию, [], соответствует местоположениям символов DM-RS согласно TS 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 - номера групп МЧР 0 и 1

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

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

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

Включите PT-RS, указанный как одно из этих значений.

  • 0 (false) - Деактивизация конфигурации СТ-RS.

  • 1 (true) - активизируйте конфигурирование СТ-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

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

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

Зависимости

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

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

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

Зависимости

Это свойство применяется только в том случае, если 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. Номинально, часть 2 CSI присутствует только тогда, когда присутствует часть 1 CSI.

Типы данных: 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 является параметром более высокого уровня dataScramedIdentityPUSCH в диапазоне от 0 до 1023, если настроен параметр более высокого уровня. В противном случае nid - идентификационный номер ячейки физического уровня NCellID в диапазоне от 0 до 1007. Для получения дополнительной информации см. TS 38.211 раздел 6.3.1.1.

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

RNTI UE, указанный как целое число от 0 до 65535.

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

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

Примечание

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

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

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

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

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

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

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

  • 'nonCodebook' - Этот параметр используется для отключения устаревшего кода MIMO.

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

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

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

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

Типы данных: 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. "НР; Физические каналы и модуляция. "Проект партнерства 3-го поколения; Техническая спецификация на сеть радиодоступа группы.

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

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

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