Engee 文档
Notebook

利用检测特性分析检测效率(上)

该示例演示了如何使用接收机检测曲线图(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是8dB,并且要求规定不超过1%的Pfa值。 您可以使用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函数的特征之一是可以设置SNR值的向量,并且该函数将为这些SNR值中的每一个计算ROC曲线。 不是针对给定SNR分别计算Pd和Pfa值,而是可以将结果查看为ROC曲线的曲线图。 如果未指定输出参数,则rosnr函数默认绘制ROC曲线。 在输入向量为四个SNR值且没有输出参数的情况下调用rosnr函数会生成ROC曲线图。

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

在图表上,使用光标选择曲线SNR=8dB在Pd=0.9的点。 您可以看到Pfa等于指定值,大约为0.01。

多脉冲检测

提高探测器性能的方法之一是对多个脉冲进行平均。 这在感兴趣的信号已知并且发生在加性复杂白噪声中的情况下特别有用。 虽然这种方法适用于线性和二次检测器,但二次检测器的结果可以偏移约0.2db。 通过假设SNR为8dB并在两个脉冲上取平均值来分析性能。

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

该图显示,在两个脉冲上平均导致在给定虚警水平下检测的概率增加。 SNR为8dB并在两个脉冲上取平均值,您可以将虚警概率限制为不超过0.0001,并获得0.9的检测概率。 回想一下,对于一个脉冲,虚警的概率必须为1%才能实现相同的检测概率。

非相干检测

目前,该示例考虑复白高斯噪声中的已知信号。 Rocsnr函数默认采用相干检测器。 要针对除了相位之外的信号已知的情况分析检测器操作,可以指定非相干检测器。 使用与之前相同的SNR值,分析非相干检测器的操作。

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

聚焦于对应于8dB的SNR的ROC曲线。 使用数据光标检查图形后,您将看到,为了实现0.9的检测概率,有必要将假阳性的概率允许为0.05。 在不使用相位信息的情况下,您将需要更高的SNR才能在给定的Pfa处实现相同的Pd。 对于非相干线性检测器,使用Albersham方程来确定哪个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 дБ

通过绘制由Albersham方程近似的SNR值的ROC曲线,可以看出检测器将达到Pd=0.9和Pfa=0.01。请注意,Alberheim技术仅适用于非相干探测器。

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

检测波动目标

在上述所有论点中,假设目标不波动,即目标的统计特征不随时间变化。然而,在现实场景中,目标可以加速和减速,以及倾斜和倾斜。 这些因素导致目标的雷达横截面(RCS)随时间而变化。 一组称为钻孔模型的统计模型通常用于描述目标RCS的随机变化。

有四种钻孔模型,即钻孔1-4。 非波动目标通常被称为钻孔0或钻孔5。 每个钻孔模型描述了目标的RCS如何随时间变化,以及这种变化的概率分布。

由于目标的RCS变化,波动目标的ROC曲线与非波动目标的曲线不匹配。 此外,由于钻孔目标将随机相位添加到接收信号中,因此更难以将相干检测器用于钻孔目的。 因此,非相干检测方法经常用于钻井目的。

现在比较非振荡目标和Swerling1目标的ROC曲线。 特别是,如果要实现相同的Pd和Pfa,则需要弄清楚这两种情况的SNR要求是什么。 对于这样的比较,绘制ROC曲线作为Pd与具有变化Pfa的SNR的函数通常是方便的。 我们可以使用rocpfa函数以这种形式绘制ROC曲线。

假设检测是非相干的,具有10个积分脉冲,并且期望的Pfa值不超过1e-8。 首先,绘制非振荡目标的ROC曲线。

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

然后,为了比较,绘制Swerling1目标的ROC曲线。

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

从图中可以看出,对于0.9的Pd,如果目标没有波动,则需要大约6dB的SNR。 但是,如果目标是Swerling case1模型,则所需的SNR增加到超过14dB,这是8dB的差异。 这将极大地影响系统的设计。

与非波动目标一样,存在近似方程以确定所需的SNR,而无需绘制所有曲线。 用于波动目的的方程是Shniedman方程。 对于用于构建ROC曲线的场景,SNR要求可以使用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 дБ

计算的SNR值对应于从曲线获得的值。

结论

ROC曲线可用于分析相干和非相干系统的探测器效率。 在本例中,使用rocsnr函数来分析线性检测器在各种SNR值下的有效性。 还考虑了通过平均多个样本实现的改进的检测器性能。 最后,该示例显示了在将非相干检测器用于非振荡和波动目的时,如何使用rocsnr和rocpfa函数来分析检测器操作。