В этом примере показано, как LTE Toolbox™ может использоваться, чтобы смоделировать Физический Канал Произвольного доступа TS36.104 (PRACH) ложный сигнальный тест соответствия вероятности. В этом случае вероятность ошибочного обнаружения преамбулы PRACH должна быть измерена, когда вход к детектору PRACH является только шумом.
Измерение вероятности ошибочного обнаружения задано в TS36.104, Раздел 8.4.1 [1]. Цель, заданная для любой пропускной способности, всех структур системы координат и для любого количества, получает антенны, ложная сигнальная вероятность, меньше чем или равная 0,1%.
Вход к детектору PRACH составлен исключительно Гауссова шумового сигнала. Обнаружение предпринято со всеми возможными индексами преамбулы ячейки, и если преамбула обнаруживается в шуме, ложное обнаружение накапливается.
Конфигурационная структура для Оборудования пользователя (UE) создается и собирается использовать 6 блоков ресурса в Дуплексе деления частоты (FDD).
ue.NULRB = 6; % Number of resource blocks ue.DuplexMode = 'FDD'; % FDD duplexing mode
Setup конфигурационная структура PRACH. Стандартные документы не задают значений, поскольку никакой PRACH не передается.
prach.Format = 0; % Preamble format prach.SeqIdx = 2; % Logical root sequence index prach.CyclicShiftIdx = 1; % Cyclic shift configuration index prach.HighSpeed = 0; % High speed flag prach.FreqOffset = 0; % Use default frequency resource index prach.PreambleIdx = []; % Empty since no preamble is transmitted
ltePRACHInfo возвращает информацию о размерности PRACH, данную настройки UE-specific и настройку передачи канала PRACH. От этой информации PRACH продолжительность выхода может быть вычислена с помощью длительности PRACH в подкадрах, длительности одного подкадра в секундах (1 мс) и уровне выборки модулятора PRACH.
info = ltePRACHInfo(ue, prach); nSamples = info.SamplingRate*info.TotSubframes*0.001;
Инициализируйте ложное количество обнаружения и введите цикл, чтобы обработать несколько испытаний обнаружения. Поскольку каждое обнаружение испытывает Гауссов шумовой сигнал (длины nSamples
) создается и обнаружение выполняется на нем для каждого возможного индекса преамбулы ячейки с помощью ltePRACHDetect. В идеальном случае не должны были быть обнаружены никакие преамбулы. В случае, где преамбула была обнаружена, зарегистрировано ложное предупреждение для этого испытания.
numTrials = 1400; falseCount = 0; % Initialize false detection counter rng('default'); % Random number generator to default state runningP=zeros(1, numTrials); runningDetected(numTrials)=struct('Detected',[],'Offset',[]); for nt = 1:numTrials % Create noise noise = complex(randn(nSamples, 1), randn(nSamples, 1)); % Attempt detection for all cell preamble indices (0...63) [detected,offset] = ltePRACHDetect(ue, prach, noise, 0:63); % Record false alarm if (~isempty(detected)) falseCount = falseCount+1; end % Calculate running false alarm probability runningP(nt) = falseCount/nt*100; % Store information about false alarm (if applicable) if (~isempty(detected)) runningDetected(nt).Detected = detected; runningDetected(nt).Offset = offset; end end
Вычислите итоговую ложную сигнальную вероятность и постройте рабочую ложную сигнальную вероятность через симуляцию.
P = falseCount / numTrials;
fprintf('\nFalse alarm probability = %0.4f%%\n',P*100);
plotFalseAlarmProbability(runningP,runningDetected);
False alarm probability = 0.0714%
3GPP TS 36.104 "Передача радио базовой станции (BS) и прием"
function plotFalseAlarmProbability(runningP,runningDetected) numTrials = length(runningP); for nt = 1:numTrials detected = runningDetected(nt).Detected; if (~isempty(detected)) offset = runningDetected(nt).Offset; plot(nt,runningP(nt),'ro','LineWidth',2,'MarkerSize',7); hold on; text(nt,runningP(nt), sprintf(['Preamble index = %d' ... ' \nTiming offset = %0.2f samples '],detected,offset), ... 'HorizontalAlignment','right'); end end plot(1:numTrials,runningP,'b','LineWidth',2); axis([0 numTrials+1 -0.1 0.2]); xlabel('Trials'); ylabel('Running false alarm probability (%)'); title('PRACH False Alarm Detection Probability'); end