Сгенерируйте символы 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
, как определено в ТС 38.211 Таблица 6.3.3.1-3.
prach1.SequenceIndex = 0;
Установите индекс строения циклического сдвига PRACH равным 1
. Для этого значения каждая преамбула PRACH имеет разное значение циклического сдвига, основанное на из ТУ 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
, как определено в ТС 38.211 Таблица 6.3.3.1-3.
prach2.SequenceIndex = 0;
Установите индекс строения циклического сдвига PRACH равным 0
. Для этого значения каждая преамбула PRACH имеет одно и то же значение циклического сдвига, равное 0
, на основании ТС 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 из ТС 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
.
определяет возвращенный индекс физического корня Последовательности Задова-Чу SequenceIndex
RootSequence
, на основании ТС 38.211 таблица 6.3.3.1-3 и таблица 6.3.3.1-4. Однако, если индекс преамбулы внутри камеры, заданный как prach
Результаты в недостаточном количестве циклических сдвигов, доступных при индексе PreambleIndex.
prach.SequenceIndex
, функцию nrPRACH
получает индекс физической корневой последовательности путем взятия последовательных индексов логической корневой последовательности в соответствии с процессом, описанным в TS 38.211 Раздел 6.3.3.1. В этом случае значение RootSequence
отличается от ожидаемого индекса, заданного prach.SequenceIndex
. Для получения примера смотрите Анализ индексов корневой последовательности PRACH.
[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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.