nrPUSCHDecode

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

Описание

пример

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

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

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

пример

[cw,symbols] = nrPUSCHDecode(___,txScheme,nLayers,tpmi) задает схему передачи в дополнение к входным параметрам в третьем синтаксисе. Когда txScheme установлен в 'codebook', функция выполняет MIMO deprecoding на основе конкретного количества слоев 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 длина полезной нагрузки части 2 CSI. Когда вы используете этот синтаксис с предварительным кодированием преобразования, функция принимает, что вводимые символы содержат данные и символы PT-RS (если применимо), и использует только символы данных для последующей обработки. Функция также обрабатывает заполнителей UCI при дескремблировании.

Примеры

свернуть все

Задайте случайную последовательность двоичных значений, соответствующих кодовой комбинации 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

Создайте объект настройки несущей с идентичностью ячейки физического уровня как 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, который ограничивает количество элементов ресурса (REs), присвоенный для 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, части 1 CSI и части 2 CSI.

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);

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

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, часть 1 CSI и часть 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 до 1 007.

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

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

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

Длина циклического префикса в виде одной из этих опций.

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

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

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

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

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

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

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

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

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

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

Схема Modulation в виде '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 ложь) — Отключают, преобразовывают предварительное кодирование. Тип формы волны является циклически-префиксным ортогональным делением частоты, мультиплексирующим (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 в виде положительного целого числа. Это свойство определяет количество ресурсов для мультиплексирования части 2 CSI. Номинальная стоимость является одной из записи из Таблицы 9.3-2 TS 38.213.

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

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

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

Скремблирование идентичности в виде целого числа от 0 до 1 023. Использование установить это свойство на NCellID свойство nrCarrierConfig объект.

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

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

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

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

Настройка DM-RS вводит в виде 1 или 2. Это свойство является dmrs-типом параметра более высокого слоя.

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

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

Положение первого символа DM-RS OFDM, обеспеченного более высоким параметром слоя 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

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

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

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

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

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

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

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

Значение по умолчанию, [], соответствует местоположениям символов DM-RS согласно таблице 6.4.1.1.3-3, 6.4.1.1.3-4 TS 38.211, или 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

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

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

  • 1 — Группа номер 0 CDM

  • 2 — Группа числа 0 и 1 CDM

  • 3 — Группа числа 0, 1 CDM, и 2

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

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

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

  • 0 ложь) — Отключают настройку 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 не указывает ни на какую передачу части 1 CSI.

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

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

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

Полученные символы модуляции 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