Практическая оценка канала
[ осуществляет практическую оценку канала по принятой сетке ресурсов h,nVar,info] = nrChannelEstimate(rxGrid,refInd,refSym)rxGrid с помощью сетки справочных ресурсов, содержащей ссылочные символы refSym в местах refInd. Функция возвращает оценку канала h, оценка дисперсии шума nVar, и дополнительная информация info .
[ определяет параметры конфигурации несущей для конкретной нумерологии мультиплексирования с ортогональным частотным разделением каналов (OFDM) в дополнение к входным аргументам из любого из предыдущих синтаксисов. Функция использует только h,nVar,info] = nrChannelEstimate(carrier,___)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');

rxGrid - Сетка полученных ресурсовПолучена сетка ресурсов, заданная как комплексный массив 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 - Индексы эталонных символовИндексы ссылочных символов, заданные как целочисленная матрица. Число строк равно количеству элементов ресурса. Можно указать все индексы в одном столбце или распределить их по нескольким столбцам. Количество элементов в 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
refSym - Ссылочные символыСсылочные символы, заданные как комплексная матрица. Число строк равно количеству элементов ресурса. Можно указать все символы в одном столбце или распределить их по нескольким столбцам. Количество элементов в refInd и refSym должны быть одинаковыми, но их размерность может отличаться. Функция изменяется refInd и refSym в векторы столбцов перед отображением их в сетку ссылок: refGrid(refInd(:)) = refSym(:).
Типы данных: single | double
Поддержка комплексного номера: Да
refGrid - Предопределенная опорная сеткаПредопределенная опорная сетка, заданная как комплексный массив K-by-N-by-P. refGrid может охватывать несколько слотов.
K - число поднесущих, равное NRB × 12, где NRB - количество блоков ресурсов в диапазоне от 1 до 275.
N - количество символов OFDM в опорной сетке.
P - количество портов опорного сигнала.
Типы данных: single | double
Поддержка комплексного номера: Да
carrier - Параметры конфигурации несущейnrCarrierConfig объектПараметры конфигурации несущей для конкретной нумерации OFDM, определенные как nrCarrierConfig объект. Функция использует только CyclicPrefix свойство этого входного сигнала.
Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.
'CyclicPrefix','extended' указывает длину расширенного циклического префикса.'CyclicPrefix' - Длина циклического префикса'normal' (по умолчанию) | 'extended'Длина циклического префикса, заданная как разделенная запятыми пара, состоящая из 'CyclicPrefix' и одно из этих значений:
'normal' - это значение используется для указания обычного циклического префикса. Эта опция соответствует 14 символам OFDM в слоте.
'extended' - это значение используется для указания расширенного циклического префикса. Эта опция соответствует 12 символам OFDM в слоте. Для нумерологии, указанной в TS 38.211, раздел 4.2, расширенная длина циклического префикса применяется только к интервалу поднесущих 60 кГц.
Примечание
При указании carrier ввод, используйте CyclicPrefix имущества carrier для указания длины циклического префикса. Этот аргумент пары имя-значение нельзя использовать вместе с carrier вход.
Типы данных: char | string
'CDMLengths' - Схема CDM для опорных сигналовСхема мультиплексирования в кодовой области (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' - Окно усреднения до интерполяции[0 0] (по умолчанию) | массив 1 на 2 неотрицательных нечетных целых чиселОкно усреднения до интерполяции, указанное как пара, разделенная запятыми, состоящая из 'AveragingWindow' и массив 1 на 2 неотрицательных нечётных целых чисел [F
T]. Элементы F и T массива задают количество смежных опорных символов в частотной области и временной области соответственно, по которым функция выполняет усреднение перед интерполяцией. Если F или T равно нулю, функция определяет усредняющее значение из оцененного отношения сигнал/шум (SNR) на основе оценки дисперсии шума. nVar.
Типы данных: double
h - Практическая оценка каналаПрактическая оценка канала, возвращаемая в виде комплексного массива K-by-L-by-R-by-P. K-by-L-by-R - форма принятой сетки ресурсов rxGrid. P - количество портов опорного сигнала.
h наследует тип данных из rxGrid.
Типы данных: double | single
nVar - Оценка дисперсии шумаОценка дисперсии шума, возвращаемая как неотрицательный скаляр. nVar - измеренная дисперсия аддитивного белого гауссова шума на принятых опорных символах.
Типы данных: double
info - Дополнительная информацияДополнительная информация, возвращенная в виде структуры с полем AveragingWindow.
| Поле параметра | Стоимость | Описание |
|---|---|---|
AveragingWindow | Массив 1 на 2 | Окно усреднения до интерполяции, возвращаемое как массив 1 на 2 [F T]. Элементы матрицы F и T указывают количество смежных опорных символов в частотной области и временной области соответственно, над которыми функция выполняла усреднение перед интерполяцией. |
Примечания и ограничения по использованию:
Имена и значения в аргументах пары имя-значение должны быть константами времени компиляции. Например, при указании расширенного циклического префикса включить {coder.Constant('CyclicPrefix'),coder.Constant('extended')} в -args значение codegen функция. Дополнительные сведения см. в разделе coder.Constant (Кодер MATLAB) класс.
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.