Ложь PRACH предупреждает тест соответствия вероятности

В этом примере показано, как LTE Toolbox™ может использоваться, чтобы смоделировать Физический Канал Произвольного доступа TS36.104 (PRACH) ложный сигнальный тест соответствия вероятности. В этом случае вероятность ошибочного обнаружения преамбулы PRACH должна быть измерена, когда вход к детектору PRACH является только шумом.

Введение

Измерение вероятности ошибочного обнаружения задано в TS36.104, Раздел 8.4.1 [1]. Цель, заданная для любой пропускной способности, всех структур системы координат и для любого количества, получает антенны, ложная сигнальная вероятность, меньше чем или равная 0,1%.

Вход к детектору PRACH составлен исключительно Гауссова шумового сигнала. Обнаружение предпринято со всеми возможными индексами преамбулы ячейки, и если преамбула обнаруживается в шуме, ложное обнаружение накапливается.

Настройка UE

Конфигурационная структура для Оборудования пользователя (UE) создается и собирается использовать 6 блоков ресурса в Дуплексе деления частоты (FDD).

ue.NULRB = 6;                   % Number of resource blocks
ue.DuplexMode = 'FDD';          % FDD duplexing mode

Настройка PRACH

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

Установите генератор PRACH продолжительность выхода для этой настройки

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%

Выбранная библиография

  1. 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

Для просмотра документации необходимо авторизоваться на сайте