Сгенерируйте символы модуляции PUCCH
генерирует символы модуляции физического канала управления восходящей линии связи (PUCCH) sym
= nrPUCCH(carrier
,pucch
,uciBits
)sym
, как определено в ТС 38.211 Разделы 6.3.2.3 - 6.3.2.6 [1] для всех форматов PUCCH. carrier
задает строение поставщика услуг. pucch
задает специфичную для формата строение PUCCH. uciBits
задает биты управляющей информации восходящего канала (UCI).
Создайте объект строения поставщика услуг по умолчанию.
carrier = nrCarrierConfig;
Задайте тождества камеры физического слоя как 490, циклический префикс как нормальный и номер паза как 57.
carrier.NCellID = 490;
carrier.CyclicPrefix = 'normal';
carrier.NSlot = 57;
Создайте объект строения формата 0 PUCCH по умолчанию.
pucch0 = nrPUCCH0Config;
Укажите первый индекс символа в пазе передачи PUCCH как 11, и количество выделенных символов PUCCH как 2. Включите внутрислотовое скачкообразное изменение частоты и скачкообразное изменение группы. Установите начальный циклический сдвиг равным 7.
pucch0.SymbolAllocation = [11 2]; pucch0.FrequencyHopping = 'intraSlot'; pucch0.GroupHopping = 'enable'; pucch0.HoppingID = []; % Set HoppingID equal to the NCellID property of carrier pucch0.InitialCyclicShift = 7;
Задайте передачу без HARQ-ACK и с положительным SR.
sr = 1; % Positive SR transmission
ack = [];
uciBits = {ack, sr};
Сгенерируйте символы модуляции формата PUCCH 0.
sym = nrPUCCH(carrier,pucch0,uciBits)
sym = 24×1 complex
-0.7071 - 0.7071i
-0.9659 + 0.2588i
-0.9659 - 0.2588i
0.7071 - 0.7071i
-0.2588 - 0.9659i
-0.9659 - 0.2588i
-0.7071 - 0.7071i
0.2588 + 0.9659i
-0.2588 + 0.9659i
-0.7071 - 0.7071i
⋮
Создайте объект строения поставщика услуг по умолчанию.
carrier = nrCarrierConfig;
Укажите несущую 60 кГц с расширенным циклическим префиксом. Установите количество (ресурсных блоков) RB в ресурсной сетке поставщика услуг, равное 80, и номер паза, равный 3.
carrier.SubcarrierSpacing = 60;
carrier.CyclicPrefix = 'extended';
carrier.NSizeGrid = 80;
carrier.NSlot = 3;
Создайте объект строения PUCCH формата 1 по умолчанию.
pucch1 = nrPUCCH1Config;
Укажите первый индекс символа в пазе передачи PUCCH как 2, и количество выделенных символов PUCCH как 10. Включите внутрислотовое скачкообразное изменение частоты и скачкообразное изменение группы. Установите тождества скачкообразного изменения равным 512, начальный циклический сдвиг равным 7 и ортогональный индекс кода покрытия (OCCI) равным 1.
pucch1.SymbolAllocation = [2 10]; pucch1.FrequencyHopping = 'intraSlot'; pucch1.GroupHopping = 'enable'; pucch1.HoppingID = 512; pucch1.InitialCyclicShift = 7; pucch1.OCCI = 1;
Задайте передачу с двухбитным HARQ-ACK.
uciBits = [1;0];
Сгенерируйте символы модуляции формата PUCCH 1.
sym = nrPUCCH(carrier,pucch1,uciBits)
sym = 60×1 complex
1.0000 + 0.0000i
0.5000 + 0.8660i
-0.8660 - 0.5000i
0.0000 + 1.0000i
-0.8660 + 0.5000i
0.8660 + 0.5000i
1.0000 - 0.0000i
0.8660 - 0.5000i
-0.8660 - 0.5000i
1.0000 - 0.0000i
⋮
Создайте объект строения поставщика услуг по умолчанию.
carrier = nrCarrierConfig;
Создайте объект строения PUCCH формата 2 по умолчанию.
pucch2 = nrPUCCH2Config;
Укажите тождества скремблирования данных как 1000, а временный идентификатор радиосети как 160.
pucch2.NID = 1000; pucch2.RNTI = 160;
Создайте случайную последовательность двоичных значений, соответствующих кодовому слову UCI в 100 битах.
uciCW = randi([0 1],100,1);
Сгенерируйте символы модуляции формата PUCCH 2 типа данных single
.
sym = nrPUCCH(carrier,pucch2,uciCW,'OutputDataType','single')
sym = 50x1 single column vector
0.7071 + 0.7071i
-0.7071 + 0.7071i
-0.7071 - 0.7071i
-0.7071 - 0.7071i
0.7071 + 0.7071i
-0.7071 + 0.7071i
0.7071 - 0.7071i
0.7071 + 0.7071i
0.7071 - 0.7071i
0.7071 - 0.7071i
⋮
Создайте объект строения поставщика услуг связи по умолчанию, а затем установите тождества камеры равным 135.
carrier = nrCarrierConfig; carrier.NCellID = 135;
Создайте объект строения PUCCH формата 3 по умолчанию.
pucch3 = nrPUCCH3Config;
Задайте схему модуляции как pi/2-BPSK, выделение PRB PUCCH в диапазоне от 70 до 74 (занимая 5 ресурсных блоков) и временный идентификатор радиосети 2560.
pucch3.Modulation = 'pi/2-BPSK';
pucch3.PRBSet = 70:74;
pucch3.RNTI = 2560;
Создайте случайную последовательность двоичных значений, соответствующих кодовому слову UCI в 120 битах.
uciCW = randi([0 1],120,1);
Сгенерируйте символы модуляции PUCCH формата 3 single
типа данных.
sym = nrPUCCH(carrier,pucch3,uciCW,'OutputDataType','single')
sym = 120x1 single column vector
0.1826 - 0.5477i
-1.0861 - 0.3479i
0.6300 + 0.8742i
-0.5093 + 0.6652i
0.1911 - 0.7721i
0.1157 + 0.4320i
0.3199 - 1.0054i
1.4349 - 1.7045i
0.4180 - 0.4832i
0.0044 - 0.3429i
⋮
Создайте объект строения поставщика услуг связи по умолчанию, а затем установите тождества камеры равным 140.
carrier = nrCarrierConfig; carrier.NCellID = 140;
Создайте объект строения PUCCH формата 4 по умолчанию.
pucch4 = nrPUCCH4Config;
Задайте схему модуляции как QPSK, коэффициент расширения как 4, OCCI как 3 и временный идентификатор радиосети как 750.
pucch4.Modulation = 'QPSK';
pucch4.SpreadingFactor = 4;
pucch4.OCCI = 3;
pucch4.RNTI = 750;
Создайте случайную последовательность двоичных значений, соответствующих кодовому слову UCI в 120 битах.
uciCW = randi([0 1],120,1);
Сгенерируйте символы модуляции формата PUCCH 4.
sym = nrPUCCH(carrier,pucch4,uciCW)
sym = 240×1 complex
0.0000 + 0.0000i
0.5977 + 0.5977i
0.0000 + 0.0000i
0.0000 + 0.0000i
0.0000 + 0.0000i
-2.2307 - 2.2307i
0.0000 + 0.0000i
0.0000 + 0.0000i
0.0000 + 0.0000i
-0.8165 - 0.8165i
⋮
carrier
- Параметры конфигурации поставщика услугnrCarrierConfig
объектПараметры конфигурации несущей для определенной нумерологии OFDM, заданные как nrCarrierConfig
объект. Эта функция использует только эти nrCarrierConfig
свойства объекта.
pucch
- Параметры конфигурации PUCCHnrPUCCH0Config
| объекта nrPUCCH1Config
| объекта nrPUCCH2Config
| объекта nrPUCCH3Config
| объекта nrPUCCH4Config
объектПараметры конфигурации PUCCH, заданные как один из следующих опций.
Для формата 0 задайте nrPUCCH0Config
объект. Функция использует только эти свойства объекта.
Для формата 1 задайте nrPUCCH1Config
объект. Функция использует только эти свойства объекта.
Для формата 2 задайте nrPUCCH2Config
объект. Функция использует только эти свойства объекта.
Для формата 3 задайте nrPUCCH3Config
объект. Функция использует только эти свойства объекта.
Для формата 4 задайте nrPUCCH4Config
объект. Функция использует только эти свойства объекта.
uciBits
- биты UCIUCI- бит, заданный как двоичный вектор-столбец, одноэлементный массив ячеек или двухэлементный массив ячеек в зависимости от типа формата. Когда вы задаете этот аргумент как массив ячеек, каждый элемент массива должен быть вектором-столбцом.
Для формата 0 необходимо задать двоичный вектор-столбец, массив ячеек с одним элементом или массив ячеек с двумя элементами.
Когда вы задаете это значение как двоичный вектор-столбец или одноэлементный массив ячеек, биты UCI приняты как биты гибридного автоматического запроса на подтверждение повторения (HARQ-ACK).
Когда вы задаете это значение как двухэлементный массив ячеек, первый элемент, как принято, имеет биты HARQ-ACK, и второй элемент, как принято, имеет бит запроса планирования (SR).
Для формата 1 необходимо задать двоичный вектор-столбец или одноэлементный массив ячеек. Этот аргумент должен содержать биты HARQ-ACK или биты SR. Чтобы передать только положительный бит SR, задайте этот аргумент следующим [0]
или {0}
.
Для форматов 2, 3 и 4 необходимо задать двоичный вектор-столбец или массив ячеек с одним элементом. Этот аргумент должен содержать кодовое слово закодированных UCI бит.
Типы данных: double
datatype
- Тип данных выходных символов'double'
| 'single'
Тип данных выходных символов, заданный как 'double'
или 'single'
.
Типы данных: char
| string
sym
- Символы модуляции PUCCHСимволы модуляции PUCCH для заданного формата, возвращенные как комплексный вектор-столбец.
Типы данных: single
| double
Поддержка комплексного числа: Да
[1] 3GPP TS 38.211. "NR; Физические каналы и модуляция ". 3rd Генерация Partnership Project; Группа технических спецификаций Радиосеть доступ.
Указания и ограничения по применению:
The datatype
входной параметр должен быть константой времени компиляции. Для примера при указании 'single'
в качестве типа выходных данных включите {coder.Constant('OutputDataType'),coder.Constant('single')}
в -args
значение codegen
функция. Для получения дополнительной информации смотрите coder.Constant
(MATLAB Coder) класс.
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.