Сгенерируйте символы модуляции PUCCH
генерирует физический восходящий канал управления (PUCCH) символы модуляции sym
= nrPUCCH(carrier
,pucch
,uciBits
)sym
, как задано в Разделах TS 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};
Сгенерируйте символы модуляции формата 0 PUCCH.
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 кГц с расширенным циклическим префиксом. Определите номер (блоки ресурса) RBS в сетке ресурса несущей к 80 и номере слота к 3.
carrier.SubcarrierSpacing = 60;
carrier.CyclicPrefix = 'extended';
carrier.NSizeGrid = 80;
carrier.NSlot = 3;
Создайте объект настройки формата 1 PUCCH по умолчанию.
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];
Сгенерируйте символы модуляции формата 1 PUCCH.
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;
Создайте объект настройки формата 2 PUCCH по умолчанию.
pucch2 = nrPUCCH2Config;
Задайте идентичность шифрования данных как 1 000 и радиосеть временный идентификатор как 160.
pucch2.NID = 1000; pucch2.RNTI = 160;
Создайте случайную последовательность двоичных значений, соответствующих кодовой комбинации UCI 100 битов.
uciCW = randi([0 1],100,1);
Сгенерируйте символы модуляции формата 2 PUCCH типа данных 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;
Создайте объект настройки формата 3 PUCCH по умолчанию.
pucch3 = nrPUCCH3Config;
Задайте схему модуляции как pi/2-BPSK, выделение PRB PUCCH, чтобы лежать в диапазоне от 70 до 74 (занятие 5 блоков ресурса), и радиосеть временный идентификатор как 2 560.
pucch3.Modulation = 'pi/2-BPSK';
pucch3.PRBSet = 70:74;
pucch3.RNTI = 2560;
Создайте случайную последовательность двоичных значений, соответствующих кодовой комбинации UCI 120 битов.
uciCW = randi([0 1],120,1);
Сгенерируйте символы модуляции формата 3 PUCCH типа данных 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;
Создайте объект настройки формата 4 PUCCH по умолчанию.
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);
Сгенерируйте символы модуляции формата 4 PUCCH.
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
— Биты UCIБиты UCI в виде вектор-столбца с бинарным знаком, массива ячеек с одним элементом или двухэлементного массива ячеек в зависимости от типа формата. Когда вы задаете этот аргумент как массив ячеек, каждым элементом в массиве должен быть вектор-столбец.
Для формата 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; Физические каналы и модуляция”. Проект Партнерства третьего поколения; Сеть радиодоступа Technical Specification Group.
Указания и ограничения по применению:
datatype
входной параметр должен быть постоянным временем компиляции. Например, при определении 'single'
когда выходные данные вводят, включают {coder.Constant('OutputDataType'),coder.Constant('single')}
в -args
значение codegen
функция. Для получения дополнительной информации смотрите coder.Constant
(MATLAB Coder) класс.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.