Практическая оценка канала
[
выполняет практическую оценку канала на полученной ресурсной сетке h
,nVar
,info
] = nrChannelEstimate(rxGrid
,refInd
,refSym
)rxGrid
при помощи ссылочной ресурсной сетки, содержащей ссылочные символы refSym
в местах нахождения refInd
. Функция возвращает оценку канала h
, оценка отклонения шума nVar
и дополнительную информацию info
.
[
задает опции с помощью одного или нескольких аргументов пары "имя-значение" в дополнение к входным параметрам в любом из предыдущих синтаксисов.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
со ссылочными символами refSym
L 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 меньше нуля, функция определяет среднее значение из оцененного отношения сигнал/шум (ОСШ) на основе оценки отклонения шума 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 Coder) класс.
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.