Этот пример объясняет, как 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)');
