Сгенерируйте символы PUSCH DM-RS
возвращает матрицу, содержащую опорный сигнал демодуляции (DM-RS) символы физического восходящего канала совместно использованный канал (PUSCH), как задано в Разделе TS 38.211 6.4.1.1.1 [1]. sym
= nrPUSCHDMRS(carrier
,pusch
)carrier
задает параметры конфигурации поставщика услуг для определенной нумерологии OFDM. pusch
задает параметры конфигурации PUSCH.
Создайте объект настройки поставщика услуг со свойствами по умолчанию. Этот объект соответствует поставщику услуг на 10 МГц с интервалом поднесущей на 15 кГц.
carrier = nrCarrierConfig;
Создайте физический восходящий канал совместно использованный канал (PUSCH) объект настройки с заданными свойствами. То, когда преобразовывают предварительное кодирование, установлено в 0, тип формы волны является циклически-префиксным ортогональным делением частоты, мультиплексирующим (CP-OFDM).
pusch = nrPUSCHConfig;
pusch.TransformPrecoding = 0;
pusch.TransmissionScheme = 'codebook';
pusch.NumAntennaPorts = 4;
pusch.TPMI = 0;
Сконфигурируйте опорный сигнал демодуляции PUSCH (DM-RS) заданными параметрами.
pusch.DMRS.DMRSAdditionalPosition = 1; pusch.DMRS.DMRSTypeAPosition = 2; pusch.DMRS.DMRSPortSet = 2; pusch.DMRS.NIDNSCID = 10; pusch.DMRS.NSCID = 1;
Сгенерируйте символы DM-RS, сопоставленные с PUSCH single
тип данных.
sym = nrPUSCHDMRS(carrier,pusch,'OutputDataType','single')
sym = 624x4 single matrix
-0.3536 - 0.3536i 0.0000 + 0.0000i 0.0000 + 0.0000i 0.0000 + 0.0000i
0.3536 - 0.3536i 0.0000 + 0.0000i 0.0000 + 0.0000i 0.0000 + 0.0000i
-0.3536 + 0.3536i 0.0000 + 0.0000i 0.0000 + 0.0000i 0.0000 + 0.0000i
-0.3536 - 0.3536i 0.0000 + 0.0000i 0.0000 + 0.0000i 0.0000 + 0.0000i
-0.3536 + 0.3536i 0.0000 + 0.0000i 0.0000 + 0.0000i 0.0000 + 0.0000i
0.3536 - 0.3536i 0.0000 + 0.0000i 0.0000 + 0.0000i 0.0000 + 0.0000i
-0.3536 - 0.3536i 0.0000 + 0.0000i 0.0000 + 0.0000i 0.0000 + 0.0000i
0.3536 + 0.3536i 0.0000 + 0.0000i 0.0000 + 0.0000i 0.0000 + 0.0000i
0.3536 - 0.3536i 0.0000 + 0.0000i 0.0000 + 0.0000i 0.0000 + 0.0000i
0.3536 - 0.3536i 0.0000 + 0.0000i 0.0000 + 0.0000i 0.0000 + 0.0000i
⋮
Создайте настройку поставщика услуг с интервалом поднесущей на 30 кГц и пропускной способностью передачи на 5 МГц.
carrier = nrCarrierConfig; carrier.SubcarrierSpacing = 30; carrier.NSizeGrid = 11;
Создайте физический восходящий канал совместно использованный канал (PUSCH) объект настройки с заданными свойствами. То, когда преобразовывают предварительное кодирование, установлено в 1, тип формы волны является ортогональным делением частоты распространения дискретного преобразования Фурье, мультиплексирующим (DFT-s-OFDM).
pusch = nrPUSCHConfig;
pusch.NSizeBWP = 9;
pusch.NStartBWP = 1;
pusch.PRBSet = 0:3;
pusch.TransformPrecoding = 1;
pusch.FrequencyHopping = 'intraSlot';
pusch.SecondHopStartPRB = 5;
Создайте объект (DM-RS) опорного сигнала демодуляции PUSCH с заданными свойствами.
dmrs = nrPUSCHDMRSConfig; dmrs.DMRSAdditionalPosition = 1; dmrs.DMRSTypeAPosition = 2; dmrs.DMRSPortSet = 3; dmrs.GroupHopping = 1; dmrs.SequenceHopping = 0; dmrs.NRSID = 10;
Присвойте объект настройки PUSCH DM-RS свойству DMRS объекта настройки PUSCH.
pusch.DMRS = dmrs;
Сгенерируйте символы PUSCH DM-RS и индексы для заданного поставщика услуг, настройки PUSCH, и выведите форматирование name-value
парный аргумент.
sym = nrPUSCHDMRS(carrier,pusch,'OutputDataType','single')
sym = 96x1 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
⋮
ind = nrPUSCHDMRSIndices(carrier,pusch,'IndexBase','0based','IndexOrientation','bwp')
ind = 96x1 uint32 column vector
217
219
221
223
225
227
229
231
233
235
⋮
Создайте часть пропускной способности (BWP) сетка, и затем сопоставьте символы DM-RS на сетке.
bwp = complex(zeros([pusch.NSizeBWP*12 carrier.SymbolsPerSlot pusch.NumLayers]));
bwp(ind+1) = sym; % Map the DM-RS symbols
Сопоставьте BWP с сеткой ресурса поставщика услуг, и затем отобразите сетку поставщика услуг.
grid = complex(zeros([carrier.NSizeGrid*12 carrier.SymbolsPerSlot pusch.NumLayers])); % Create carrier resource grid offset = pusch.NStartBWP-carrier.NStartGrid; % BWP start location in the carrier grid grid(offset*12+1:(offset+pusch.NSizeBWP)*12,:,:) = bwp; imagesc(abs(grid(:,:,1))); axis xy; xlabel('OFDM Symbols'); ylabel('Subcarriers'); title('PUSCH DM-RS Resource Elements in the Carrier Resource Grid');
carrier
— Параметры конфигурации поставщика услугnrCarrierConfig
объектПараметры конфигурации поставщика услуг для определенной нумерологии OFDM в виде nrCarrierConfig
объект. Эта функция использует только эти свойства nrCarrierConfig
объект.
Поле свойства | Значения | Описание |
---|---|---|
NCellID | 1 (значение по умолчанию), целое число от 0 до 1 007 | Идентичность ячейки физического уровня |
SubcarrierSpacing | 15 (значение по умолчанию), 30, 60, 120, 240 | Интервал поднесущей в kHz |
CyclicPrefix | 'normal' (значение по умолчанию), 'расширенное' | Длина циклического префикса в виде одной из этих опций.
Для нумерологии, заданной в Разделе TS 38.211 4.2, расширенная длина циклического префикса применяется только для интервала поднесущей на 60 кГц. |
NSizeGrid | 52 (значения по умолчанию), целое число от 1 до 275 | Количество ресурса блокируется в сетке ресурса поставщика услуг |
NStartGrid | 0 (значений по умолчанию), целое число от 0 до 2 199 | Запустите сетки ресурса поставщика услуг относительно общего блока 0 ресурса (CRB 0) |
NSlot | 0 (значение по умолчанию), неотрицательный целочисленный скаляр | Номер слота. Можно установить |
pusch
— Параметры конфигурации PUSCHnrPUSCHConfig
объектПараметры конфигурации PUSCH в виде nrPUSCHConfig
объект. Эта функция использует только эти свойства nrPUSCHConfig
объект.
Поле свойства | Значения | Описание |
---|---|---|
NSizeBWP |
| Размер части пропускной способности (BWP) в терминах количества физических блоков ресурса (PRBs). Значение по умолчанию |
NStartBWP |
| Запуск индекса PRB BWP относительно CRB 0. Значение по умолчанию |
NumLayers | 1 (значение по умолчанию), целое число от 1 до 4 | Количество слоев передачи |
MappingType | (Значение по умолчанию), 'B' | Отображение типа PUSCH |
SymbolAllocation | [0 14] (значение по умолчанию), двухэлементный вектор из неотрицательных целых чисел | Символы OFDM выделяются для PUSCH |
PRBSet | [0:51] (значение по умолчанию), вектор из неотрицательных целых чисел от 0 до 274 | PRBs выделяется для PUSCH в BWP |
TransformPrecoding | 0 (значение по умолчанию), 1 | Преобразуйте флаг перед кодированием в виде одного из этих значений.
|
TransmissionScheme |
| Схема передачи PUSCH |
TPMI | 0 (значений по умолчанию), целое число от 0 до 27 | Переданный предварительно кодирующий матричный индикатор. Это свойство применимо когда |
NumAntennaPorts | 1 (значение по умолчанию), 2, или 4 | Количество портов антенны. Значение должно быть больше или быть равно |
FrequencyHopping |
| Настройка скачкообразного движения частоты для PUSCH |
SecondHopStartPRB | 1 (значение по умолчанию), целое число от 0 до 274 | Запуск индекса PRB второго транзитного участка относительно BWP |
DMRS |
|
Для получения дополнительной информации смотрите |
datatype
— Тип данных для сгенерированных символов DM-RS'double'
(значение по умолчанию) | 'single'
Тип данных для сгенерированных символов DM-RS в виде 'double'
или 'single'
.
Типы данных: char |
string
sym
— Символы DM-RSСимволы DM-RS, возвращенные как комплексная матрица. Количество столбцов соответствует количеству сконфигурированных портов антенны.
Типы данных: single
| double
Поддержка комплексного числа: Да
[1] 3GPP TS 38.211. “NR; Физические каналы и модуляция”. Проект Партнерства третьего поколения; Сеть радиодоступа Technical Specification Group.
Указания и ограничения по применению:
Имена и значения в аргументах пары "имя-значение" должны быть константами времени компиляции. Например, чтобы задать single
тип данных для выхода, включайте {coder.Constant('OutputDataType'),coder.Constant('single')}
в -args
значение codegen
функция. Для получения дополнительной информации смотрите coder.Constant
(MATLAB Coder) класс.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.