Engee 文档
Notebook

利用探测特性进行探测性能分析(第 1 部分)

该示例演示了如何利用接收器检测曲线图(ROC 曲线)评估相干和非相干系统的性能。示例假设检测器在加性复白高斯噪声下工作。

ROC 曲线通常用于评估雷达或声纳探测器的性能。ROC 曲线是给定信噪比 (SNR) 下的探测概率 (Pd) 与误报概率 (Pfa) 的对比图。

使用的函数

In [ ]:
Pkg.add(["Statistics"])
In [ ]:
using SpecialFunctions,Statistics

简介

Pd 是事件 1 发生时说明 1 为真的概率,Pfa 是事件 0 发生时说明 1 为真的概率。在声纳和雷达等应用中,事件 1 表示有目标出现,事件 0 表示没有目标出现。

单脉冲检测

在给定 SNR 值的情况下,可以计算出线性或二次方检测器通过单脉冲可以达到的 Pd 值和 Pfa 值。设置 Pd 值时,假设 SNR 为 8 dB,且要求 Pfa 值不超过 1%。您可以使用 rocsnr 函数计算 Pd 和 Pfa 值,然后确定哪个 Pd 值对应于 Pfa = 0.01。请注意,默认情况下,rocsnr 函数假定进行相干检测。

In [ ]:
Pd,Pfa = rocsnr(8,"Pd&Pfa")

# нахождения номера элемента для Pfa=0.01
idx = findfirst(round.(Pfa;sigdigits=16).==0.01) 
print("idx = $(idx)")
idx = 81

使用上面定义的数字,可以找到与 Pfa = 0.01 相对应的 Pd 值。

In [ ]:
Pd[idx]
print("Pd[idx] = $(round(Pd[idx];sigdigits=5))")
Pd[idx] = 0.8899

rocsnr 函数的特点之一是,您可以指定一个信噪比值向量,该函数将为每个信噪比值计算 ROC 曲线。您无需分别计算给定信噪比的 Pd 值和 Pfa 值,而是以 ROC 曲线图的形式查看结果。如果没有指定输出参数,rocsnr 函数默认绘制 ROC 曲线。调用 rocsnr 函数,输入四个 SNR 值向量,不指定输出参数,即可绘制 ROC 曲线图。

In [ ]:
SNRvals = [2 4 8 9.4]
rocsnr(SNRvals)
Out[0]:

在曲线图中,用光标选择 Pd = 0.9 处的 SNR = 8 dB 曲线。

检测多个脉冲

提高探测器性能的一种方法是对多个脉冲进行平均。当感兴趣的信号已知并出现在加性复白噪声中时,这种方法尤其有用。虽然这种方法既适用于线性检测器,也适用于二次检测器,但二次检测器的结果可能会偏差约 0.2 dB。将信噪比取为 8 dB 并对两个脉冲取平均值来分析其性能。

In [ ]:
rocsnr(8;NumPulses=2)
Out[0]:

从图中可以看出,在给定误报率的情况下,对两个脉冲取平均值可获得更高的检测概率。如果 SNR 为 8 dB 并对两个脉冲取平均值,则可以将误报率限制在不超过 0.0001 的范围内,从而获得 0.9 的检测概率。回想一下,单脉冲的误报率必须为 1%,才能达到相同的检测概率。

非相干检测

此时,示例考虑的是复白高斯噪声中的已知信号。默认的 rocsnr 函数假定使用相干检测器。要分析除相位外已知信号的检测器性能,可以指定一个非相干检测器。使用与之前相同的 SNR 值,分析非相干检测器的性能。

In [ ]:
rocsnr(SNRvals,SignalType="NonfluctuatingNoncoherent")
Out[0]:

重点关注信噪比为 8 dB 时的 ROC 曲线。通过使用数据光标查看曲线图,您会发现要达到 0.9 的检测概率,必须让误报概率低至 0.05。如果不使用相位信息,则需要更高的 SNR 才能在给定 Pfa 的情况下实现相同的 Pd。对于非相干线性探测器,可使用阿尔伯森方程来确定 SNR 值,以获得所需的 Pd 和 Pfa。

In [ ]:
SNR_valdB = albersheim(0.9,.01) # Pd=0.9 and Pfa=0.01
print("SNR_valdB = $(round(SNR_valdB;sigdigits=5)) дБ")
SNR_valdB = 9.5027 дБ

通过绘制阿尔伯沙姆方程近似 SNR 值的 ROC 曲线,可以看出探测器将达到 Pd = 0.9 和 Pfa = 0.01。

In [ ]:
rocsnr(SNR_valdB,SignalType="NonfluctuatingNoncoherent")
Out[0]:

检测波动目标

在上述所有推理中,假定目标不会波动,即目标的统计特征不会随时间发生变化。然而,在实际场景中,目标会加速和减速,也会翻滚和倾斜。这些因素会导致目标的雷达截面(RCS)随时间发生变化。通常使用一组称为斯弗林模型的统计模型来描述目标 RCS 的随机变化。

共有四种斯维林模型,即斯维林 1-4 模型。每个钻孔模型都描述了目标 RCS 随时间的变化情况以及这种变化的概率分布。

由于目标的 RCS 会发生变化,因此波动目标的 ROC 曲线与非波动目标的 ROC 曲线不同。此外,由于钻孔目标会给接收到的信号增加随机相位,因此更难对钻孔目标使用相干检测器。因此,非相干检测方法通常用于钻孔目标。

现在比较非相干目标和 Swerling 1 目标的 ROC 曲线。特别是,如果要达到相同的 Pd 和 Pfa,您需要找出这两种情况下的信噪比要求。为了进行这种比较,通常可以方便地将 ROC 曲线绘制成 Pd 与 SNR 的函数关系图,同时改变 Pfa。我们可以使用 rocpfa 函数以这种形式绘制 ROC 曲线。

假设检测是非相干的,有 10 个积分脉冲,所需的 Pfa 值不大于 1e-8。首先绘制非相干目标的 ROC 曲线。

In [ ]:
rocpfa(1e-8,NumPulses=10,SignalType="NonfluctuatingNoncoherent")
Out[0]:

然后绘制斯韦尔林 1 目标的 ROC 曲线进行比较。

In [ ]:
rocpfa(1e-8,NumPulses=10,SignalType="Swerling1")
Out[0]:

从图中可以看出,如果目标没有摆动,0.9 的 Pd 需要约 6 dB 的信噪比。但是,如果目标是 Swerling case 1 模型,所需的信噪比就会增加到 14 dB 以上,相差 8 dB。这将极大地影响系统的设计。

与非斯韦尔林目标一样,有一些近似方程可用于确定所需的信噪比,而无需绘制所有曲线。用于波动目标的方程是 Schnidman 方程。对于用于构建 ROC 曲线的情况,可以使用 shnidman 函数得出信噪比要求。

In [ ]:
snr_sw1_db = shnidman(0.9,1e-8,10,1)  # Pd=0.9, Pfa=1e-8, 10 pulses
print("snr_sw1_db = $(round(snr_sw1_db;sigdigits=5)) дБ")
snr_sw1_db = 14.713 дБ

计算出的信噪比值与曲线得出的值相对应。

结论

ROC 曲线可用于分析相干和非相干系统的探测器效率。在本示例中,使用 rocsnr 函数分析了线性探测器在不同 SNR 值下的性能。此外,还考察了平均多个样本对探测器性能的改善。最后,该示例展示了如何使用 rocsnr 和 rocpfa 函数分析非相干探测器在非相干和波动目标下的探测器性能。