Main Content

Receiver Operating Characteristics

Receiver Operating Characteristic (ROC) curves present graphical summaries of a detector's performance. You can generate ROC curves using the rocpfa and rocsnr functions.

If you are interested in examining the effect of varying the false-alarm probability on the probability of detection for a fixed SNR, you can use rocsnr. For example, the threshold SNR for the Neyman-Pearson detector of a single sample in real-valued Gaussian noise is approximately 13.5 dB. Use rocsnr to plot the probability of detection varies as a function of the false-alarm rate at that SNR.

T = npwgnthresh(1e-6,1,'real');
rocsnr(T,'SignalType','real')

Figure contains an axes object. The axes object with title Real Receiver Operating Characteristic (ROC) Curves, xlabel P indexOf fa baseline, ylabel P indexOf d baseline P_d contains 2 objects of type line, text.

The ROC curve lets you easily read off the probability of detection for a given false-alarm rate.

You can use rocsnr to examine detector performance for different received signal types at a fixed SNR.

SNR = 13.54;
[Pd_real,Pfa_real] = rocsnr(SNR,'SignalType','real',...
    'MinPfa',1e-8);
[Pd_coh,Pfa_coh] = rocsnr(SNR,...
    'SignalType','NonfluctuatingCoherent',...
    'MinPfa',1e-8);
[Pd_noncoh,Pfa_noncoh] = rocsnr(SNR,'SignalType',...
    'NonfluctuatingNoncoherent','MinPfa',1e-8);
semilogx(Pfa_real,Pd_real)
hold on
grid on
semilogx(Pfa_coh,Pd_coh,'r')
semilogx(Pfa_noncoh,Pd_noncoh,'k')
xlabel('False-Alarm Probability')
ylabel('Probability of Detection')
legend('Real','Coherent','Noncoherent','location','southeast')
title('ROC Curve Comparison for Nonfluctuating RCS Target')
hold off

Figure contains an axes object. The axes object with title ROC Curve Comparison for Nonfluctuating RCS Target, xlabel False-Alarm Probability, ylabel Probability of Detection contains 3 objects of type line. These objects represent Real, Coherent, Noncoherent.

The ROC curves clearly demonstrate the superior probability of detection performance for coherent and noncoherent detectors over the real-valued case.

The rocsnr function accepts an SNR vector input letting you quickly examine a number of ROC curves.

SNRs = (6:2:12);
rocsnr(SNRs,'SignalType','NonfluctuatingNoncoherent')

Figure contains an axes object. The axes object with title Nonfluctuating Noncoherent Receiver Operating Characteristic (ROC) Curves, xlabel P indexOf fa baseline, ylabel P indexOf d baseline P_d contains 8 objects of type line, text.

The graph shows that, as the SNR increases, the supports of the probability distributions under the null and alternative hypotheses become more disjointed. Therefore, for a given false-alarm probability, the probability of detection increases.

You can examine the probability of detection as a function of SNR for a fixed false-alarm probability with rocpfa. To obtain ROC curves for a Swerling I target model at false-alarm probabilities of (1e-6,1e-4,1e-2,1e-1), use

Pfa = [1e-6 1e-4 1e-2 1e-1];
rocpfa(Pfa,'SignalType','Swerling1')

Figure contains an axes object. The axes object with title Swerling1 Receiver Operating Characteristic (ROC) Curves, xlabel SNR (dB), ylabel P indexOf d baseline P_d contains 8 objects of type line, text.

Use rocpfa to examine the effect of SNR on the probability of detection for a detector using noncoherent integration with a false-alarm probability of 1e-4. Assume the target has a nonfluctuating RCS and that you are integrating over 5 pulses.

[Pd,SNR] = rocpfa(1e-4,...
    'SignalType','NonfluctuatingNoncoherent',...
    'NumPulses',5);
figure;
plot(SNR,Pd); xlabel('SNR (dB)');
ylabel('Probability of Detection'); grid on;
title('Nonfluctuating Noncoherent Detector (5 Pulses)');

Figure contains an axes object. The axes object with title Nonfluctuating Noncoherent Detector (5 Pulses), xlabel SNR (dB), ylabel Probability of Detection contains an object of type line.

Related Topics