Создание символов PRACH
[ возвращает символы физического канала произвольного доступа (PRACH), как определено в TS 38.211 Раздел 6.3.3 [1]. Вход sym,info] = nrPRACH(carrier,prach)carrier определяет параметры конфигурации несущей для конкретной нумерации OFDM. Вход prach определяет параметры конфигурации PRACH. Функция также возвращает структуру info, которая содержит зависящую от оператора информацию о PRACH.
Сконфигурируйте PRACH и оператор связи со свойствами по умолчанию.
carrier = nrCarrierConfig; prach = nrPRACHConfig;
Создание символов и индексов PRACH с использованием указанных параметров конфигурации несущей и PRACH.
prachSym = nrPRACH(carrier,prach); prachInd = nrPRACHIndices(carrier,prach);
Создайте сетку ресурсов PRACH со всеми нулями.
prachGrid = nrPRACHGrid(carrier,prach);
Сопоставьте символы PRACH с сеткой ресурсов PRACH с помощью индексов.
prachGrid(prachInd) = prachSym;
Проанализируйте физические корневые индексы последовательности Задоффа-Чу, сгенерировав 64 ортогональных преамбулы PRACH для двух различных конфигураций PRACH.
Индексы корневой последовательности с одним значением
Сконфигурируйте PRACH и оператор связи со свойствами по умолчанию.
carrier = nrCarrierConfig; prach1 = nrPRACHConfig;
Установите индекс логической корневой последовательности PRACH в значение 0. Для этого значения индекс физической корневой последовательности равен 129, как определено в TS 38.211 Таблица 6.3.3.1-3.
prach1.SequenceIndex = 0;
Установите индекс конфигурации циклического сдвига PRACH в значение 1. Для этого значения каждая преамбула PRACH имеет разное значение циклического сдвига, основанное на из TS 38.211 Таблица 6.3.3.1-5.
prach1.ZeroCorrelationZone = 1;
Создайте 64 преамбулы PRACH для хранения индексов физической корневой последовательности и значений циклического сдвига.
rootSequence1 = NaN(1,64); cyclicShift1 = NaN(1,64); for preambleIndex = 0:63 prach1.PreambleIndex = preambleIndex; [~,info] = nrPRACH(carrier,prach1); rootSequence1(preambleIndex+1) = info.RootSequence; cyclicShift1(preambleIndex+1) = info.CyclicShift; end
Убедитесь, что в каждой преамбуле индекс физической корневой последовательности равен 129, которое является ожидаемым значением от настройки индекса логической корневой последовательности до 0.
disp(rootSequence1)
Columns 1 through 13 129 129 129 129 129 129 129 129 129 129 129 129 129 Columns 14 through 26 129 129 129 129 129 129 129 129 129 129 129 129 129 Columns 27 through 39 129 129 129 129 129 129 129 129 129 129 129 129 129 Columns 40 through 52 129 129 129 129 129 129 129 129 129 129 129 129 129 Columns 53 through 64 129 129 129 129 129 129 129 129 129 129 129 129
Убедитесь, что каждая преамбула имеет разное значение циклического сдвига.
disp(cyclicShift1)
Columns 1 through 13
0 13 26 39 52 65 78 91 104 117 130 143 156
Columns 14 through 26
169 182 195 208 221 234 247 260 273 286 299 312 325
Columns 27 through 39
338 351 364 377 390 403 416 429 442 455 468 481 494
Columns 40 through 52
507 520 533 546 559 572 585 598 611 624 637 650 663
Columns 53 through 64
676 689 702 715 728 741 754 767 780 793 806 819
Индексы корневой последовательности с различными значениями
Настройте другой PRACH со свойствами по умолчанию.
prach2 = nrPRACHConfig;
Установите индекс логической корневой последовательности PRACH в значение 0. Для этого значения индекс физической корневой последовательности равен 129, как определено в TS 38.211 Таблица 6.3.3.1-3.
prach2.SequenceIndex = 0;
Установите индекс конфигурации циклического сдвига PRACH в значение 0. Для этого значения каждая преамбула PRACH имеет одно и то же значение циклического сдвига, равное 0, на основании TS 38.211 Таблица 6.3.3.1-5.
prach2.ZeroCorrelationZone = 0;
Создайте 64 преамбулы PRACH для хранения индексов физической корневой последовательности и значений циклического сдвига.
rootSequence2 = NaN(1,64); cyclicShift2 = NaN(1,64); for preambleIndex = 0:63 prach2.PreambleIndex = preambleIndex; [~,info] = nrPRACH(carrier,prach2); rootSequence2(preambleIndex+1) = info.RootSequence; cyclicShift2(preambleIndex+1) = info.CyclicShift; end
Проверьте физические индексы корневой последовательности и значения циклического сдвига. Несмотря на то, что индекс логической корневой последовательности prach.SequenceIndexявляется 0, не каждое значение индекса физической корневой последовательности является ожидаемым значением 129. Поскольку значение циклического сдвига равно нулю в каждой преамбуле, функция nrPRACH получает физические индексы корневой последовательности, принимая последовательные логические значения индекса. Возвращенные физические индексы корневой последовательности соответствуют логическим индексам от 0 до 63 из TS 38.211 Таблица 6.3.3.1-3.
disp(rootSequence2)
Columns 1 through 13
129 710 140 699 120 719 210 629 168 671 84 755 105
Columns 14 through 26
734 93 746 70 769 60 779 2 837 1 838 56 783
Columns 27 through 39
112 727 148 691 80 759 42 797 40 799 35 804 73
Columns 40 through 52
766 146 693 31 808 28 811 30 809 27 812 29 810
Columns 53 through 64
24 815 48 791 68 771 74 765 178 661 136 703
disp(cyclicShift2)
Columns 1 through 13
0 0 0 0 0 0 0 0 0 0 0 0 0
Columns 14 through 26
0 0 0 0 0 0 0 0 0 0 0 0 0
Columns 27 through 39
0 0 0 0 0 0 0 0 0 0 0 0 0
Columns 40 through 52
0 0 0 0 0 0 0 0 0 0 0 0 0
Columns 53 through 64
0 0 0 0 0 0 0 0 0 0 0 0
carrier - Параметры конфигурации несущейnrCarrierConfig объектПараметры конфигурации несущей для конкретной нумерации OFDM, определенные как nrCarrierConfig объект.
prach - Параметры конфигурации PRACHnrPRACHConfig объектПараметры конфигурации PRACH, указанные как nrPRACHConfig объект.
datatype - Тип данных выходных символов'double' (по умолчанию) | 'single'Тип данных выходных символов, указанный как 'double' или 'single'.
Типы данных: char | string
sym - символы PRACH[]Символы PRACH, возвращаемые как сложный вектор столбца или пустой массив. Количество символов зависит от конфигурации PRACH prach. Функция возвращает пустой массив, если преамбула PRACH не активна в текущем слоте.
Типы данных: single | double
info - Информация PRACH, зависящая от несущейИнформация PRACH, зависящая от оператора связи, возвращается в виде структуры, содержащей следующие поля:
| Области | Описание |
|---|---|
RootSequence | Индекс или индексы физического корня последовательности Задоффа-Чу |
CyclicShift | Циклический сдвиг или сдвиги последовательности Задоффа-Чу |
CyclicOffset | Циклический сдвиг или сдвиги, соответствующие доплеровскому сдвигу 1/TSEQ, где TSEQ - длина последовательности PRACH (применяется только к ограниченному набору) |
NumCyclicShifts | Количество циклических сдвигов, соответствующих одной последовательности преамбулы PRACH |
Примечание
Индекс логической корневой последовательности prach. определяет возвращенный индекс последовательности Zadoff-Chu физического корня SequenceIndexRootSequence, на основании TS 38.211 таблица 6.3.3.1-3 и таблица 6.3.3.1-4. Однако, если индекс преамбулы в ячейке, указанный prach., приводит к недостаточному количеству циклических сдвигов, доступных при индексе PreambleIndexprach.SequenceIndex, функция nrPRACH получает индекс физической корневой последовательности, беря последовательные индексы логической корневой последовательности, следуя процессу, описанному в TS 38.211 раздел 6.3.3.1. В этом случае значение RootSequence отличается от ожидаемого индекса, указанного prach.SequenceIndex. Пример см. в разделе Анализ индексов корневой последовательности PRACH.
[1] 3GPP TS 38.211. "НР; Физические каналы и модуляция. "Проект партнерства 3-го поколения; Техническая спецификация на сеть радиодоступа группы.
Примечания и ограничения по использованию:
datatype входной аргумент должен быть константой времени компиляции. Например, при указании 'single' в качестве типа выходных данных, включить {coder.Constant('OutputDataType'),coder.Constant('single')} в -args значение codegen функция. Дополнительные сведения см. в разделе coder.Constant (Кодер MATLAB) класс.
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.