Этот пример показывает, как обнаружить сигнал в комплексном, белом Гауссовом шуме с помощью нескольких принятых выборок сигнала. Для использования преимущества усиления обработки используется согласованный фильтр.
Пример, Signal Detection in Белый Гауссов Шум, представляет основную задачу обнаружения сигнала. В этом примере для выполнения обнаружения используется только одна выборка из принятого сигнала. Этот пример включает больше выборок в процесс обнаружения для улучшения эффективности обнаружения.
Как и в предыдущем примере, примите, что степень сигнала равна 1, и отношение один сигнал дискретизации к шуму (ОСШ) составляет 3 дБ. Количество испытаний Монте-Карло составляет 100000. Желаемая вероятность ложного предупреждения (PFA) составляет 0,001.
Ntrial = 1e5; % number of Monte Carlo trials Pfa = 1e-3; % Pfa snrdb = 3; % SNR in dB snr = db2pow(snrdb); % SNR in linear scale npower = 1/snr; % noise power namp = sqrt(npower/2); % noise amplitude in each channel
Как обсуждалось в предыдущем примере, порог определяется на основе PFA. Поэтому, пока выбран порог, PFA фиксируется, и наоборот. Между тем, безусловно, предпочитают иметь более высокую вероятность обнаружения (Pd). Один из способов достичь этого - использовать несколько выборок для выполнения обнаружения. Для примера в предыдущем случае ОСШ на одной выборке составляет 3 дБ. Если можно использовать несколько выборок, то согласованный фильтр может привести к дополнительному усилению в ОСШ и, таким образом, улучшить эффективность. На практике можно использовать более длинную форму волны для достижения этого усиления. В случае обработки сигнала в дискретном времени можно также получить несколько выборок путем увеличения частоты дискретизации.
Предположим, что форма волны теперь сформирована двумя выборками
Nsamp = 2;
wf = ones(Nsamp,1);
mf = conj(wf(end:-1:1)); % matched filter
Для когерентного приемника сигнал, шум и порог заданы как
% fix the random number generator rstream = RandStream.create('mt19937ar','seed',2009); s = wf*ones(1,Ntrial); n = namp*(randn(rstream,Nsamp,Ntrial)+1i*randn(rstream,Nsamp,Ntrial)); snrthreshold = db2pow(npwgnthresh(Pfa, 1,'coherent')); mfgain = mf'*mf; threshold = sqrt(npower*mfgain*snrthreshold); % Final threshold T
Если цель присутствует
x = s + n; y = mf'*x; z = real(y); Pd = sum(z>threshold)/Ntrial
Pd = 0.3947
Если цель отсутствует
x = n; y = mf'*x; z = real(y); Pfa = sum(z>threshold)/Ntrial
Pfa = 0.0011
Заметьте, что ОСШ улучшается согласованным фильтром.
snr_new = snr*mf'*mf; snrdb_new = pow2db(snr_new)
snrdb_new = 6.0103
Постройте график кривой ROC с этим новым значением ОСШ.
rocsnr(snrdb_new,'SignalType','NonfluctuatingCoherent','MinPfa',1e-4);
На рисунке видно, что точка, заданная PFA и Pd, падает прямо на кривую. Поэтому ОСШ, соответствующий кривой ROC, является ОСШ одной выборки на выходе согласованного фильтра. Это показывает, что, хотя для выполнения обнаружения можно использовать несколько выборок, порог одной выборки в ОСШ (snrthreshold в программе) не меняется по сравнению с простым случаем выборки. Нет никакого изменения, потому что пороговое значение по существу определяется PFA. Однако конечный порог T действительно меняется из-за дополнительного согласованного усиления фильтра. Результат PFA остается неизменным по сравнению со случаем, когда для обнаружения используется только одна выборка. Однако дополнительный согласованный коэффициент усиления улучшил Pd с 0,1390 до 0,3947.
Можно запустить аналогичные случаи для некогерентного приемника, чтобы проверить отношение между Pd, PFA и ОСШ.
Радиолокационные и гидроакустические приложения часто используют импульсное интегрирование, чтобы еще больше улучшить эффективность обнаружения. Если приемник когерентен, импульсное интегрирование просто добавляет действительные части согласованных фильтрованных импульсов. Таким образом, улучшение ОСШ линейно, когда используется когерентный приемник. Если интегрируется 10 импульсов, то ОСШ улучшается в 10 раз. Для некогерентного приемника отношение не так просто. Следующий пример показывает использование импульсного интегрирования с некогерентным приемником.
Предположим интегрирование 2 импульсов. Затем создайте принятый сигнал и примените к нему согласованный фильтр.
PulseIntNum = 2; Ntotal = PulseIntNum*Ntrial; s = wf*exp(1i*2*pi*rand(rstream,1,Ntotal)); % noncoherent n = sqrt(npower/2)*... (randn(rstream,Nsamp,Ntotal)+1i*randn(rstream,Nsamp,Ntotal));
Если цель присутствует
x = s + n;
y = mf'*x;
y = reshape(y,Ntrial,PulseIntNum); % reshape to align pulses in columns
Можно интегрировать импульсы, используя любой из двух возможных подходов. Оба подхода связаны с приближением модифицированной функции Бесселя первого рода, которая встречается при моделировании теста отношения вероятностей (LRT) некогерентного процесса обнаружения с использованием нескольких импульсов. Первый подход - это сумма abs (y) ^ 2 через импульсы, которая часто упоминается как детектор квадратного закона. Второй подход состоит в том, чтобы суммировать abs (y) из всех импульсов, который часто упоминается как линейный детектор. Для малых ОСШ предпочтительным является детектор квадратного закона, в то время как для больших ОСШ предпочтительным является использование линейного детектора. Мы используем квадратный детектор закона в этой симуляции. Однако различие между двумя типами детекторов обычно находится в пределах 0,2 дБ.
В данном примере выберите детектор квадратного закона, который популярнее линейного детектора. Для выполнения детектора квадратного закона можно использовать функцию пульсинта. Функция обрабатывает каждый столбец матрицы входных данных как отдельный импульс. Функция пульсинта выполняет операцию
z = pulsint(y,'noncoherent');
Отношение между порогом T и PFA, учитывая эту новую достаточную статистику z, определяется как
где
является формой Пирсона неполной гамма-функции, и L является количеством импульсов, используемых для импульсного интегрирования. Используя детектор квадратного закона, можно вычислить порог ОСШ, включающий интегрирование импульсов, используя функцию npwgnthresh, как и прежде.
snrthreshold = db2pow(npwgnthresh(Pfa,PulseIntNum,'noncoherent'));
Получившийся порог для достаточной статистики, z, задается как
mfgain = mf'*mf; threshold = sqrt(npower*mfgain*snrthreshold);
Вероятность обнаружения получается путем
Pd = sum(z>threshold)/Ntrial
Pd = 0.5343
Затем вычислите PFA, когда принятый сигнал является шумом, только используя некогерентный детектор с 2 интегрированными импульсами.
x = n;
y = mf'*x;
y = reshape(y,Ntrial,PulseIntNum);
z = pulsint(y,'noncoherent');
Pfa = sum(z>threshold)/Ntrial
Pfa = 0.0011
Чтобы построить график кривой ROC с импульсным интегрированием, необходимо задать количество импульсов, используемых в интегрировании в функции rocsnr
rocsnr(snrdb_new,'SignalType','NonfluctuatingNoncoherent',... 'MinPfa',1e-4,'NumPulses',PulseIntNum);
Снова точка, заданная PFA и Pd, падает на кривую. Таким образом, ОСШ в кривой ROC задает ОСШ одной выборки, используемой для обнаружения из одного импульса.
Такое значение ОСШ может быть также получено из Pd и PFA с помощью уравнения Альберсхайма. Результат, полученный из уравнения Альберсхайма, является всего лишь приближением, но довольно хорошим для часто используемых PFA, Pd и области значений импульсного интегрирования.
Примечание: уравнение Альберсхайма имеет много допущений, таких как цель неколеблющаяся (Случай завихрения 0 или 5), шум сложный, белый Гауссов, приемник некогерентен и линейный детектор используется для обнаружения (детектор квадратного закона для неколеблющейся цели также в порядке).
Чтобы вычислить необходимый ОСШ одной выборки для достижения определенных Pd и PFA, используйте функцию albersheim как
snr_required = albersheim(Pd,Pfa,PulseIntNum)
snr_required = 6.0009
Это вычисленное необходимое значение ОСШ соответствует новому значению ОСШ 6 дБ.
Чтобы увидеть улучшение, достигнутое в Pd путем импульсного интегрирования, постройте график кривой ROC, когда не используется импульсное интегрирование.
rocsnr(snrdb_new,'SignalType','NonfluctuatingNoncoherent',... 'MinPfa',1e-4,'NumPulses',1);
Из рисунка можно увидеть, что без импульсного интегрирования Pd может быть только около 0,24 с PFA в 1e-3. С 2-импульсным интегрированием, как проиллюстрировано в вышеописанной симуляции Монте-Карло, для той же PFA, Pd составляет около 0,53.
Этот пример показал, как использование множественной выборки сигнала в обнаружении может улучшить вероятность обнаружения при сохранении желаемой вероятности ложного уровня тревоги. В частности, он показал использование либо более длинной формы волны, либо импульсного метода интегрирования для улучшения Pd. Пример иллюстрирует отношение между Pd, PFA, кривой ROC и уравнением Альберсхайма. Эффективность вычисляется с помощью симуляций Монте-Карло.