nrChannelEstimate

Практическая оценка канала

Описание

пример

[h,nVar,info] = nrChannelEstimate(rxGrid,refInd,refSym) выполняет практическую оценку канала на полученной ресурсной сетке rxGrid при помощи ссылочной ресурсной сетки, содержащей ссылочные символы refSym в местах нахождения refInd. Функция возвращает оценку канала h, оценка отклонения шума nVarи дополнительную информацию info .

[h,nVar,info] = nrChannelEstimate(rxGrid,refGrid) задает предопределенную ссылочную ресурсную сетку refGrid.

[h,nVar,info] = nrChannelEstimate(carrier,___) задает параметры конфигурации несущей для определенной ортогональной нумерологии частотного разнесения (OFDM) в дополнение к входным параметрам из любого из предыдущих синтаксисов. Функция использует только CyclicPrefix свойство carrier вход.

[h,nVar,info] = nrChannelEstimate(___,Name,Value) задает опции с помощью одного или нескольких аргументов пары "имя-значение" в дополнение к входным параметрам в любом из предыдущих синтаксисов.

Примеры

свернуть все

Сгенерировать символы опорного сигнала демодуляции (DM-RS) физического широковещательного канала (PBCH) для идентификационного номера 42 камеры физического слоя. Зависящая от времени часть инициализации скремблирования DM-RS составляет 0.

ncellid = 42;
ibar_SSB = 0;
dmrsSym = nrPBCHDMRS(ncellid,ibar_SSB);

Получите индексы ресурсного элемента для PBCH DM-RS.

dmrsInd = nrPBCHDMRSIndices(ncellid);

Создайте ресурсную сетку, содержащую сгенерированные символы DM-RS.

nrb = 20;
scs = 15;
carrier = nrCarrierConfig('NSizeGrid',nrb,'SubcarrierSpacing',scs);
nTxAnts = 1;
txGrid = nrResourceGrid(carrier,nTxAnts);
txGrid(dmrsInd) = dmrsSym;

Модулируйте ресурсную сетку с помощью заданных длины БПФ и длины циклического префикса.

ofdmInfo = nrOFDMInfo(carrier);
nulls = [1:136 377:512].';
txWaveform = nrOFDMModulate(carrier,txGrid);

Создайте модель канала TDL-C с заданными свойствами.

channel = nrTDLChannel;
channel.NumReceiveAntennas = 1;
channel.SampleRate = ofdmInfo.SampleRate;
channel.DelayProfile = 'TDL-C';
channel.DelaySpread = 100e-9;
channel.MaximumDopplerShift = 20;

Получите максимальное количество задержанных выборок из пути канала с помощью наибольшей задержки и задержки реализации фильтра канала.

chInfo = info(channel);
maxChDelay = ceil(max(chInfo.PathDelays*channel.SampleRate)) + chInfo.ChannelFilterDelay;

Чтобы смыть задержанные выборки из канала, добавьте нули в конце переданной формы волны, соответствующей максимальному количеству задержанных выборок и количеству передающих антенн. Передайте заполненную форму волны через модель канала TDL-C.

[rxWaveform,pathGains] = channel([txWaveform; zeros(maxChDelay,nTxAnts)]);

Оцените смещение синхронизации для передачи, используя символы DM-RS в качестве опорных символов. Модуляция OFDM опорных символов использует начальное число пазов 0.

initialSlot = 0;
offset = nrTimingEstimate(carrier,rxWaveform,txGrid);

Синхронизируйте принятую форму волны в соответствии с оцененным временным смещением.

rxWaveform = rxWaveform(1+offset:end,:);

Создайте полученную ресурсную сетку, содержащую демодулированную и синхронизированную полученную форму волны.

cpFraction = 0.55;
rxGrid = nrOFDMDemodulate(carrier,rxWaveform,'CyclicPrefixFraction',cpFraction);

Получите практическую оценку канала.

H = nrChannelEstimate(rxGrid,dmrsInd,dmrsSym);

Получите идеальную оценку канала.

pathFilters = getPathFilters(channel);
H_ideal = nrPerfectChannelEstimate(carrier,pathGains,pathFilters,offset);

Сравните практические и совершенные оценки канала.

figure;
subplot(1,2,1);
imagesc(abs(H));
xlabel('OFDM Symbol');
ylabel('Subcarrier');
title('Practical Estimate Magnitude');
subplot(1,2,2);
imagesc(abs(H_ideal));
xlabel('OFDM Symbol');
ylabel('Subcarrier');
title('Perfect Estimate Magnitude');

Figure contains 2 axes. Axes 1 with title Practical Estimate Magnitude contains an object of type image. Axes 2 with title Perfect Estimate Magnitude contains an object of type image.

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

свернуть все

Полученная ресурсная сетка, заданная как K -by- L -by- R комплексный массив.

  • K - количество поднесущих, равное NRB × 12, где NRB - количество ресурсных блоков в области значений от 1 до 275.

  • L - количество символов OFDM в паз или в ссылку сетке.

    • Когда вы звоните nrChannelEstimate со ссылочными символами refSymL 12 для расширенного циклического префикса и 14 для нормального циклического префикса. Установите длину циклического префикса с помощью 'CyclicPrefix' аргумент пары "имя-значение".

    • Когда вы звоните nrChannelEstimate с опорной ресурсной сеткой refGrid, L должно равняться N, количеству символов OFDM в ссылку сетке.

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

Типы данных: single | double
Поддержка комплексного числа: Да

Ссылочные индексы символов, заданные как целочисленная матрица. Количество строк равняется количеству ресурсных элементов. Можно задать все индексы в одном столбце или разбить их по нескольким столбцам. Количество элементов в refInd и refSym должны быть одинаковыми, но их размерность может различаться. Функция изменяет форму refInd и refSym в векторы-столбцы перед отображением их в ссылку сетку: refGrid(refInd(:)) = refSym(:).

Элементы refInd являются основанными на 1 линейными индексами, адресующими K -by- L -by- P ресурсный массив.

  • K - количество поднесущих, равное NRB × 12, где NRB - количество ресурсных блоков в области значений от 1 до 275. K должно быть равно первой размерности rxGrid.

  • L - количество символов OFDM в пазе. L 12 для расширенного циклического префикса и 14 для нормального циклического префикса. Установите длину циклического префикса с помощью 'CyclicPrefix' аргумент пары "имя-значение".

  • P - количество портов опорного сигнала, выведенное из области значений в refInd.

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

Ссылочные символы, заданные как комплексная матрица. Количество строк равняется количеству ресурсных элементов. Можно задать все символы в одном столбце или распределить их по нескольким столбцам. Количество элементов в refInd и refSym должны быть одинаковыми, но их размерность может различаться. Функция изменяет форму refInd и refSym в векторы-столбцы перед отображением их в ссылку сетку: refGrid(refInd(:)) = refSym(:).

Типы данных: single | double
Поддержка комплексного числа: Да

Предопределенная опорная сетка, заданная как K -by N -by P комплексный массив. refGrid может охватывать несколько пазы.

  • K - количество поднесущих, равное NRB × 12, где NRB - количество ресурсных блоков в области значений от 1 до 275.

  • N - количество символов OFDM в ссылку сетке.

  • P - количество портов опорного сигнала.

Типы данных: single | double
Поддержка комплексного числа: Да

Параметры конфигурации несущей для определенной нумерологии OFDM, заданные как nrCarrierConfig объект. Функция использует только CyclicPrefix свойство этого входа.

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

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

Пример: 'CyclicPrefix','extended' задает расширенные длины циклического префикса.

Длина циклического префикса, заданная как разделенная разделенными запятой парами, состоящая из 'CyclicPrefix' и одно из следующих значений:

  • 'normal' - Используйте это значение, чтобы задать нормальный циклический префикс. Эта опция соответствует 14 символам OFDM в пазе.

  • 'extended' - Используйте это значение для задания расширенного циклического префикса. Эта опция соответствует 12 символам OFDM в пазе. Для нумераций, указанных в TS 38.211 Раздел 4.2, расширенная длина циклического префикса применяется только к интервалу между поднесущими 60 кГц.

Примечание

Если вы задаете carrier введите, используйте CyclicPrefix свойство carrier вход для задания длины циклического префикса. Вы не можете использовать этот аргумент пары "имя-значение" вместе со carrier вход.

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

Код мультиплексирования (CDM) для опорных сигналов, заданная как разделенная запятой пара, состоящая из 'CDMLengths' и массив 1 на 2 неотрицательных целых чисел [FD TD]. Элементы массива FD и TD определяют длину сжатия CDM в частотный диапазон (FD-CDM) и временного интервала (TD-CDM), соответственно. Значение 1 для элемента не задает CDM.

Пример: 'CDMLengths',[2 1] задает FD-CDM2 и отсутствие TD-CDM.

Пример: 'CDMLengths',[1 1] не задает ортогональное сжатие.

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

Окно усреднения перед интерполяцией, заданное как разделенная разделенными запятой парами, состоящая из 'AveragingWindow' и массив 1 на 2 неотрицательных нечетных целых чисел [F T]. Элементы массива F и T задают количество смежных символов ссылки в частотный диапазон и временной интервал, соответственно, над которыми функция выполняет усреднение перед интерполяцией. Если F или T меньше нуля, функция определяет среднее значение из оцененного отношения сигнал/шум (ОСШ) на основе оценки отклонения шума nVar.

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

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

свернуть все

Практическая оценка канала, возвращенная как K -by- L -by- R -by- P комплексный массив. K -by- L -by- R является формой полученной ресурсной сетки rxGrid. P - количество портов опорного сигнала.

h наследует тип данных от rxGrid.

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

Оценка отклонения шума, возвращенная как неотрицательный скаляр. nVar - измеренное отклонение аддитивного белого Гауссово шума на полученных эталонных символах.

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

Дополнительная информация, возвращенная как структура с полем AveragingWindow.

Поле параметраЗначениеОписание
AveragingWindow

массив 1 на 2

Окно усреднения перед интерполяцией, возвращаемое как массив 1 на 2 [F T]. Элементы массива F и T указывают количество смежных символов ссылки в частотном диапазоне и временной интервал, соответственно, над которыми функция выполняла усреднение перед интерполяцией.

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

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