nrExtractResources

Извлечение ресурсных элементов из массива ресурсов

Описание

re = nrExtractResources(ind,grid) возвращает элементы ресурса из массива ресурсов grid использование индексов ресурсного элемента ind. Функция может извлечь элементы ресурса, даже если grid имеет размерность, которая отличается от размерности индексов ind. В этом синтаксисе указанные индексы основаны на 1 с использованием формы линейного индексирования.

Обычно конкретные функции канала или сигнала генерируют индексы ресурсного элемента, чтобы сопоставить символы канала или сигнала с ресурсной сеткой. Индексы адресуют элементы ресурса в массиве M -by- N -by- P. M - количество поднесущих, N - количество символов OFDM, а P - количество портов антенны.

Например, следующая диаграмма подчеркивает элементы массива ресурса массив ресурса 4 на 4 на 2. Индексы ресурсного элемента находятся в основанной на 1 форме линейной индексации. Количество портов антенны два (P = 2).

пример

[re,reind] = nrExtractResources(ind,grid) также возвращается reind, индексы извлеченных ресурсных элементов re в массиве ресурсов grid. Область массива reind - тот же размер, что и извлеченные ресурсные элементы re.

[re1,...,reN,reind1,...,reindN] = nrExtractResources(ind,grid1,grid2,....,gridN) извлекает элементы ресурса из нескольких массивов ресурсов с помощью индексов элемента ресурса ind.

[___] = nrExtractResources(___,Name,Value) задает необязательные аргументы пары "имя-значение" в дополнение к любому из наборов входных параметров в предыдущих синтаксисах. Используйте эти аргументы пары "имя-значение", чтобы задать формат входных индексов и метод извлечения. Неустановленные аргументы берут значения по умолчанию.

Примеры

свернуть все

Извлекают символы физического широковещательного канала (PBCH) из принятой сетки и связанных с ней оценок канала при подготовке к декодированию сформированного лучом PBCH.

PBCH-кодирование и формирования луча

Создайте случайную последовательность двоичных значений, соответствующих кодовому слову BCH. Длина кодового слова 864, как указано в TS 38.212 Раздел 7.1.5. Используя кодовое слово, создайте символы и индексы для передачи PBCH. Укажите идентификационный номер камеры физического слоя.

E = 864;
cw = randi([0 1],E,1);
ncellid = 17;
v = 0;
pbchTxSym = nrPBCH(cw,ncellid,v);
pbchInd = nrPBCHIndices(ncellid);

Использование nrExtractResources для создания индексов для двух передающих антенн пучкового PBCH. Используйте эти индексы, чтобы сопоставить сформированный лучом PBCH с ресурсным массивом передатчика.

carrier = nrCarrierConfig('NSizeGrid',20);
P = 2;
txGrid = nrResourceGrid(carrier,P);
F = [1 1i];
[~,bfInd] = nrExtractResources(pbchInd,txGrid);
txGrid(bfInd) = pbchTxSym*F;

OFDM модулирует символы PBCH, отображенные в ресурсный массив передатчика.

txWaveform = nrOFDMModulate(carrier,txGrid);

Передача и декодирование PBCH

Создайте и примените матрицу канала к форме волны. Получите переданные формы волны.

R = 3;
H = dftmtx(max([P R]));
H = H(1:P,1:R);
H = H/norm(H);
rxWaveform = txWaveform*H;

Создайте оценки канала, включая формирование луча.

 hEstGrid = repmat(permute(H.'*F.',[3 4 1 2]),[240 4]);
 nEst = 0;

Демодулируйте принятую форму волны, используя ортогональное частотное деление мультиплексирование (OFDM).

 rxGrid = nrOFDMDemodulate(carrier,rxWaveform);

При подготовке к декодированию PBCH извлекают символы из принятой сетки и сетки оценки канала.

[pbchRxSym,pbchHestSym] = nrExtractResources(pbchInd,rxGrid,hEstGrid);
figure;
plot(pbchRxSym,'o:');
title('Received PBCH Constellation'); 

Figure contains an axes. The axes with title Received PBCH Constellation contains 3 objects of type line.

Выравнивание символов путем выполнения MMSE эквализации на извлеченных ресурсах. Постройте график результатов.

pbchEqSym = nrEqualizeMMSE(pbchRxSym,pbchHestSym,nEst);
figure;
plot(pbchEqSym,'o:');
title('Equalized PBCH Constellation');

Figure contains an axes. The axes with title Equalized PBCH Constellation contains an object of type line.

Извлеките мягкие биты путем выполнения декодирования PBCH на уравненных символах.

pbchBits = nrPBCHDecode(pbchEqSym,ncellid,v)
pbchBits = 864×1
1010 ×

   -2.0000
   -2.0000
    2.0000
   -2.0000
   -2.0000
    2.0000
    2.0000
   -2.0000
   -2.0000
   -2.0000
      ⋮

Входные параметры

свернуть все

Индексы ресурсного элемента, заданные как матрица.

  • Если 'IndexStyle' является 'index'каждый столбец матрицы содержит линейные индексы для соответствующей антенны.

  • Если 'IndexStyle' является 'subscript', ind является трехколоночной матрицей. Строки матрицы соответствуют нижним индексам [поднесущая, символ, антенна] на основе количества поднесущих, символов OFDM и антенн, соответственно.

Функция принимает, что индексы основаны на 1, если вы не задаете обратное со 'IndexBase' аргумент.

Типы данных: double

Массив ресурсов, из которого можно извлечь элементы ресурсов, заданный как одно из следующих значений:

  • 3-D массив размера M -by- N -by- R, который соответствует полученной сетке - M количество поднесущих, N количество символов OFDM, и R количество приемных антенн. Сетка создается после демодуляции OFDM.

  • 4-D числовой массив размера M -by N -by R -by - P, которая соответствует сетке оценки канала - P является количеством портов антенны. Сетка создается после оценки канала.

Типы данных: double

Аргументы в виде пар имя-значение

Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

Пример: nrExtractResources(ind,grid,'ExtractionMethod','direct','IndexBase','0based') задает метод прямого извлечения с индексацией на основе 0.

Форма индексации RE, заданная в качестве одного из следующих значений:

  • 'index' - Индексы указаны в виде линейного индекса.

  • 'subscript' - Индексы указаны в форме строки [поднесущая, символ, антенна].

Типы данных: char | string

RE- основы индексации, заданные как одно из следующих значений:

  • '1based' - Счетчик индексов начинается с 1.

  • '0based' - Счетчик индексов начинается с 0.

Типы данных: char | string

Метод извлечения ресурсного элемента, заданный как разделенная разделенными запятой парами, состоящая из 'ExtractionMethod' и 'allplanes' или 'direct'.

  • 'allplanes' - Функция извлекает ресурсные элементы из каждой M -by N плоскости в grid. Функция использует индексы, которые адресуют уникальные местоположения поднесущих и символов во всех плоскостях индексированного ресурсного массива. См. Метод извлечения всех плоскостей (по умолчанию).

  • 'direct' - Функция извлекает ресурсные элементы из каждой плоскости M -by N (для 3-D grid) или M -by- N -by- R массив (для 4-D grid). Функция использует индексы, которые адресуют соответствующую плоскость индексированного массива ресурсов непосредственно. См. «Метод прямого извлечения».

Типы данных: string | char

Выходные аргументы

свернуть все

Извлеченные элементы ресурса, возвращенные как вектор-столбец или числовой массив.

Когда 'ExtractionMethod' установлено в 'allplanes', размер re является N RE-by- R -by- P, где:

  • N RE является количеством ресурсных элементов, извлеченных из каждой M -by N плоскости grid.

  • R количество приемных антенн.

  • P - количество самолетов.

Когда 'ExtractionMethod' установлено в 'direct', размер re зависит от количества индексов, адресованных каждой плоскости индексированной ресурсной сетки.

  • Если количество индексов, адресованных каждой плоскости, одинаковое, то re имеет размер N RE-by- R -by- P.

  • Если количество индексов, адресующих каждую плоскость, различно, то re - вектор-столбец, содержащая все извлеченные элементы ресурса.

Для получения дополнительной информации о методах извлечения ресурсов см. «Алгоритмы».

Индексы извлеченных ресурсных элементов в grid, возвращенный как числовой массив. reind - тот же размер, что и извлеченный массив ресурсных элементов re. The reind выход наследует стиль индексации и основу индексов от ind.

Алгоритмы

свернуть все

Метод извлечения всех плоскостей (по умолчанию)

Чтобы использовать этот метод, установите 'ExtractionMethod' на 'allplanes'. Этот метод извлекает ресурсные элементы из каждой M -by N плоскости в grid. Индексы адресованы уникальным местоположениям поднесущих и символов во всех плоскостях индексированного массива ресурсов. Схема подсвечивает индексы, используемые для извлечения ресурсных элементов из ресурсной сетки с P = 2.

Процесс извлечения для 3-D полученной сетки

Следующие схемы иллюстрируют извлечение ресурсного элемента из 3-D принятой сетки, где количество приемных антенн R = 3. Ресурсные элементы извлекаются из сетки в местоположениях символов и поднесущих.

Процесс извлечения для 4-D сетки оценки канала

Следующая схема показывает процесс извлечения для 4-D сетки оценки канала. Количество приемных антенн R = 3 и количество портов антенны P = 2. Ресурсная сетка 4-D состоит из P M -by- N -by- R массивов, каждый из которых сопоставлен с антенным портом. Элементы ресурса извлекаются из всех плоскостей в этих массивах.

Метод прямого извлечения

Чтобы использовать этот метод, установите 'ExtractionMethod' на 'direct'. Этот метод извлекает элементы ресурса из grid принимая, что третьи и четвертые размерности grid представляют то же свойство, что и плоскости индексированного ресурсного массива, такие как порты антенны, слои, передающие антенны. Поэтому функция извлекает только элементы ресурса, относящиеся к каждой плоскости индексированной ресурсной сетки.

  • Для 3-D gridпрямой метод извлекает элементы из каждой M -by N плоскости grid использование индексов, адресованных той же плоскости индексированного массива ресурсов. Этот метод аналогичен стандартному MATLAB® операция re = grid(ind). Поэтому reind = ind.

  • Для 4-D gridпрямой метод извлекает элементы из каждого M -by- N -by- R массива grid при помощи индексов, адресованных той же плоскости индексированного массива ресурсов. Функция принимает, что свойство, представленное плоскостями индексированного массива ресурсов, совпадает с четвертой размерностью grid.

Процесс извлечения для 4-D сетки оценки канала

Следующая схема показывает процесс извлечения для 4-D сетки оценки канала. Количество приемных антенн R = 3 и количество портов антенны P = 2. Ресурсная сетка 4-D состоит из P количества M -by- N -by- R массивов, каждый из которых сопоставлен с антенным портом. Индексы, соответствующие каждому отдельному порту антенны в индексированном ресурсном массиве, используются для извлечения ресурсных элементов из каждой из этих массивов.

Расширенные возможности

.
Введенный в R2018b