Сгенерируйте символы 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
, как задано в таблице 6.3.3.1-3 TS 38.211.
prach1.SequenceIndex = 0;
Установите индекс настройки циклического сдвига PRACH на 1
. Для этого значения каждая преамбула PRACH имеет различное значение циклического сдвига, на основе из таблицы 6.3.3.1-5 TS 38.211.
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
, как задано в таблице 6.3.3.1-3 TS 38.211.
prach2.SequenceIndex = 0;
Установите индекс настройки циклического сдвига PRACH на 0
. Для этого значения каждая преамбула PRACH имеет то же значение циклического сдвига, равное 0
, на основе таблицы 6.3.3.1-5 TS 38.211.
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 из таблицы 6.3.3.1-3 TS 38.211.
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
, на основе таблицы 6.3.3.1-3 TS 38.211 и Таблицы 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; Физические каналы и модуляция”. Проект Партнерства третьего поколения; Сеть радиодоступа Technical Specification Group.
Указания и ограничения по применению:
datatype
входной параметр должен быть постоянным временем компиляции. Например, при определении 'single'
когда выходные данные вводят, включают {coder.Constant('OutputDataType'),coder.Constant('single')}
в -args
значение codegen
функция. Для получения дополнительной информации смотрите coder.Constant
(MATLAB Coder) класс.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.