Этот пример объясняет, как OFDM функционирует (nrOFDMModulate, nrOFDMInfo, и nrOFDMDemodulate) установите значение по умолчанию для входа размера быстрого преобразования Фурье (FFT), Nfft, когда вы вызываете функцию OFDM, и эти условия применяются.
Вы задаете пользовательское значение для входа частоты дискретизации, SampleRate.
Вы не задаете значение для Nfft введите или вы задаете 'Nfft',[].
Значение, которое вы устанавливаете для SampleRate введите определяет частоту дискретизации формы волны.
Номинальная частота дискретизации, соответствующая размеру БПФ, используемому в модуляции OFDM, , равно Nfft * carrier.SubcarrierSpacing * 1000, где carrier входной параметр вызова функции, задавая настройку несущей.
Поскольку передискретизация OFDM-модулируемой формы волны на коэффициент SampleRate/, передискретизация является дорогостоящей если SampleRate и не имейте больших общих множителей.
Значение по умолчанию установлено для Nfft введите удовлетворяет этим условиям.
Nfft является кратным 128, то есть, Nfft = 128 * Y (чтобы гарантировать длины циклического префикса с целочисленным знаком).
Нижняя граница Y равно ceil((carrier.NSizeGrid * 12 / 0.85) / 128), то есть, нижняя граница зависит максимального заполнения БПФ 85%.
Верхняя граница Y равно ceil((2 * SampleRate / (carrier.SubcarrierSpacing * 1000)) / 128), то есть, верхняя граница зависит от частоты дискретизации, которую вы задаете.
Y максимизирует общие множители номинальных и заданных частот дискретизации, то есть, gcd(, SampleRate).
Создайте объект настройки несущей.
carrier = nrCarrierConfig;
Установите SampleRate для каждого NSizeGrid значение, чтобы дать заполнение точно 75%.
nSizeGrids = 1:275; userSampleRateDefaultNfft = zeros(1,275); fftOccupancy = zeros(1,275); for nSizeGrid = 1:275 carrier.NSizeGrid = nSizeGrid; % Transmission bandwidth of OFDM waveform txBW = carrier.NSizeGrid * 12 * carrier.SubcarrierSpacing * 1000; sr = txBW / 0.75; ofdmInfo = nrOFDMInfo(carrier,'SampleRate',sr); userSampleRateDefaultNfft(nSizeGrid) = ofdmInfo.Nfft; fftOccupancy(nSizeGrid) = carrier.NSizeGrid * 12 / ofdmInfo.Nfft; end
Постройте получившийся Nfft значения.
figure; plot(nSizeGrids,userSampleRateDefaultNfft,'x'); title({'Nfft for Custom SampleRate' 'with Bandwidth Occupancy of 75%'}); axis([1 275 min(userSampleRateDefaultNfft) max(userSampleRateDefaultNfft)]); xlabel('NSizeGrid'); xticks([1 52 106 160 216 275]); ylabel('Nfft'); yticks([min(userSampleRateDefaultNfft) 1024:1024:8192 max(userSampleRateDefaultNfft)]);

Постройте получившееся заполнение БПФ.
figure; plot(nSizeGrids,fftOccupancy,'x'); title({'FFT Occupancy for Custom SampleRate' 'with Bandwidth Occupancy of 75%'}); axis([1 275 0 1]); xlabel('NSizeGrid'); xticks([1 52 106 160 216 275]); ylabel('FFT Occupancy');
