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) задает опции при помощи одного или нескольких аргументов пары "имя-значение" в дополнение к входным параметрам в любом из предыдущих синтаксисов.

Примеры

свернуть все

Сгенерируйте физический канал телевизионного вещания (PBCH) опорный сигнал демодуляции (DM-RS) символы для личного номера ячейки физического уровня 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 objects. Axes object 1 with title Practical Estimate Magnitude contains an object of type image. Axes object 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 со ссылочными символами refSym, L 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 имя аргумента и 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 despreading в частотном диапазоне (FD-CDM) и временном интервале (TD-CDM), соответственно. Значение 1 для элемента не задает CDM.

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

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

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

Окно усреднения перед интерполяцией в виде разделенной запятой пары, состоящей из 'AveragingWindow' и 1 2 массив неотрицательных нечетных целых чисел [F T]. F элементов массива и T задают количество смежных ссылочных символов в частотном диапазоне и временном интервале, соответственно, по которому функция выполняет усреднение перед интерполяцией. Если F или T являются нулем, функция решает, что значение усреднения от предполагаемого отношения сигнал-шум (SNR) на основе шумового отклонения оценивает 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