Используйте пользовательскую частоту дискретизации OFDM и размер БПФ по умолчанию

Этот пример объясняет, как OFDM функционирует (nrOFDMModulate, nrOFDMInfo, и nrOFDMDemodulate) установите значение по умолчанию для входа размера быстрого преобразования Фурье (FFT), Nfft, когда вы вызываете функцию OFDM, и эти условия применяются.

  • Вы задаете пользовательское значение для входа частоты дискретизации, SampleRate.

  • Вы не задаете значение для Nfft введите или вы задаете 'Nfft',[].

Пользовательская частота дискретизации OFDM

Значение, которое вы устанавливаете для SampleRate введите определяет частоту дискретизации формы волны.

Номинальная частота дискретизации, соответствующая размеру БПФ, используемому в модуляции OFDM, FFTSR, равно Nfft * carrier.SubcarrierSpacing * 1000, где carrier входной параметр вызова функции, задавая настройку несущей.

Поскольку передискретизация OFDM-модулируемой формы волны на коэффициент SampleRate/FFTSR, передискретизация является дорогостоящей если SampleRate и FFTSR не имейте больших общих множителей.

Размер БПФ по умолчанию

Значение по умолчанию установлено для 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(FFTSR, 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 contains an axes object. The axes object with title Nfft for Custom SampleRate with Bandwidth Occupancy of 75% contains an object of type line.

Постройте получившееся заполнение БПФ.

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');

Figure contains an axes object. The axes object with title FFT Occupancy for Custom SampleRate with Bandwidth Occupancy of 75% contains an object of type line.

Смотрите также

Функции

Похожие темы