Этот пример объясняет, как OFDM функционирует (nrOFDMModulate
, nrOFDMInfo
, и nrOFDMDemodulate
) установите значение по умолчанию для входа частоты дискретизации, SampleRate
, когда вы вызываете функцию OFDM, и эти условия применяются.
Вы не задаете значение для SampleRate
введите или вы задаете 'SampleRate',[]
.
Вы задаете пользовательское значение для входа размера быстрого преобразования Фурье (FFT), Nfft
.
Значение по умолчанию установлено для SampleRate
вход равен:
Nfft * carrier.SubcarrierSpacing * 1000
.
Значение, которое вы устанавливаете для Nfft
введите должен удовлетворить этим условиям.
Nfft
целочисленное значение, приводящее к длинам циклического префикса с целочисленным знаком.
Nfft
целочисленная степень 2.
Nfft
результаты в максимальном заполнении 100%. Фактическое заполнение равно carrier.NSizeGrid * 12 / Nfft
, где carrier
входной параметр вызова функции, задавая настройку несущей.
Создайте объект настройки несущей.
carrier = nrCarrierConfig;
Установите Nfft
для каждого NSizeGrid
значение, чтобы дать заполнение самое большее 90%.
nSizeGrids = 1:275; userNfftOccupancy = zeros(1,275); sampleRate = zeros(1,275); for nSizeGrid = nSizeGrids carrier.NSizeGrid = nSizeGrid; nfft = 128 * ceil(carrier.NSizeGrid * 12 / 0.9 / 128); ofdmInfo = nrOFDMInfo(carrier,'Nfft',nfft); userNfftOccupancy(nSizeGrid) = carrier.NSizeGrid * 12 / ofdmInfo.Nfft; sampleRate(nSizeGrid) = ofdmInfo.SampleRate / 1e6; end
Постройте получившееся заполнение.
figure; plot(nSizeGrids,userNfftOccupancy,'x'); title({'Bandwidth Occupancy for Default SampleRate' 'with Nfft Selected for Maximum Occupancy of 90%'}); axis([1 275 0 1]); xlabel('NSizeGrid'); xticks([1 52 106 160 216 275]); ylabel('Bandwidth Occupancy (NSizeGrid * 12 / Nfft)');
Постройте получившуюся частоту дискретизации.
figure; plot(nSizeGrids,sampleRate,'x'); title({'Default SampleRate' 'with Nfft Selected for Maximum Occupancy of 90%'}); axis([1 275 0 max(sampleRate)]); xlabel('NSizeGrid'); xticks([1 52 106 160 216 275]); ylabel('Sample Rate (Ms/s)');