主要内容

恒虚警率(CFAR)探测器

CFAR探测器的误报率

在Neyman-Pearson框架中,检测的概率最大化受到假警报概率不超过指定级别的约束。假警报概率取决于噪声方差。因此,要计算错误警报概率,必须首先估计噪声方差。如果噪声方差发生变化,则必须调整阈值以保持常量的假警报速率。恒定假警报速率探测器实现自适应程序,使您能够在干扰功率变化时更新测试的阈值水平。

为了激励对自适应过程的需求,假设一个简单的二进制假设测试,您必须在单个样本中决定在信号不存在和信号存在的假设之间。信号具有幅度4,噪声是单位方差的零均值高斯。

$H_{0}: x = w,$$ \ 4 $$w \sim N(0,1)$$

$$ h_ {1}:x = 4 + w $$

首先,将假警报速率设置为0.001并确定阈值。

t = npwgnthresh(1E-3,1,“真实”的);阈值=√db2pow (T))
阈值= 3.0902

检查该阈值是否产生所需的假警报率概率,然后计算检测概率。

PFA = 0.5 * ERFC(阈值/ SQRT(2))PD = 0.5 * ERFC((阈值-4)/ SQRT(2))
Pfa = 1.0000e-03 pd = 0.8185

接下来,假设噪声功率增加6.02 dB,噪声方差增加一倍。如果检测器不能通过确定新的阈值来适应方差的增加,则假警报率将显著增加。

PFA = 0.5 * ERFC(阈值/ 2)
PFA = 0.0144.

下图显示了增大噪声方差对固定阈值的虚警概率的影响。

noisevar = 1:0.1:10;noisepower = 10 * log10 (noisevar);pfa = 0.5 *误差补函数(threshold. /√(2 * noisevar));semilogy (noisepower pfa. / 1 e - 3)网格标题(“由于噪声方差导致的P_{FA}增加”) ylabel (“P_{FA}(数量级)的增加”)包含('噪音功率增加(DB)'

细胞平均CFAR检测器

单元平均CFAR检测器估计感兴趣的距离单元的噪声方差,或单元测试下,通过从指定为的相邻范围单元格中分析数据训练细胞。假设训练单元中的噪声特性与被测电池中的噪声特性相同(切割)。

这种假设是符合训练单元的使用来估计切割中的噪声方差的关键。另外,电池平均CFAR检测器假定训练单元不包含来自目标的任何信号。因此,假设训练单元中的数据仅由噪声组成。

使这些假设现实:

  • 优选有一些缓冲液,或保卫细胞,在切割和训练细胞之间。保护单元提供的缓冲区守卫反对信号泄漏到训练单元中,并且对噪声方差的估计产生不利影响。

  • 如下图所示,训练单元不应表示从切口的范围太远的范围细胞。

噪声方差的最优估计量取决于分布假设和检测器的类型。假设如下:

  1. 你用的是平方法则检测器。

  2. 你有一个高斯复值随机变量(RV)具有独立的实部和虚部。

  3. 实部和虚部的均值为零,方差等于σ2/ 2。

    笔记

    如果你用z = u + jv,大小的平方| Z |2遵循指数分布,平均值σ2

如果训练单元中的样本是如此复杂高斯RV的平方大,则可以使用样本意味着作为噪声方差的估计器。

要实现单元平均CFAR检测,请使用临界.CFARDetector.。您可以自定义检测器的特性,例如训练单元和保护单元的数量,以及误报的概率。

CFAR检测器对噪声输入数据的自适应

此示例显示如何创建CFAR检测器并测试其适应输入数据统计信息的能力。测试使用仅噪声试验。通过使用默认的方法检测器,可以确定经验假警报率为所需的假警报概率的近距离。

笔记:此示例仅在R2016b或更高版本中运行。如果您正在使用较早的版本,请将对该函数的每个调用替换为等价的句法。例如,更换myobject(x)步骤(myObject x)

创建一个CFAR检测器对象,该对象具有两个守卫单元,20个训练单元,虚警概率为0.001。默认情况下,该对象假设是一个没有脉冲积分的平方律检测器。

探测器=分阶段。CFARDetector (“NumGuardCells”,2,......'numtringcells'20,“ProbabilityFalseAlarm”,1E-3);

每侧有10个训练细胞和1个保护单元单元测试下(切)。将剪切索引设置为12。

CUTidx = 12;

为一组可重复的输入数据设置随机数生成器。

rng (1000);

设置噪声方差为0.25。这个值相当于一个近似-6 dB的信噪比。生成一个23 × 10000的复值矩阵,具有指定方差的白色高斯rv。矩阵的每一行代表一个单元格的10,000次蒙特卡罗试验。

ntrials = 1E4;方差= 0.25;ncell = 23;InputData = SQRT(variance / 2)*(Randn(ncells,ntrials)+ 1j * Randn(ncells,ntrials));

因为该示例实现了平方法则检测器,所以取数据矩阵中元素的大小的平方。

Z = abs (inputdata)。^ 2;

提供来自Square-Law操作员的输出和在CFAR探测器的测试中的电池指数。

Z_detect =检测器(Z, CUTidx);

输出,Z_detect,是一个有10,000个元素的逻辑向量。总结中的元素Z_detect并划分审判总数,以获得经验假警报率。

pfa = (Z_detect) / Ntrials求和
PFA = 0.0013.

经验假警报率为0.0013,其与所需的假警报速率紧密相对应0.001。

细胞平均CFAR检测器的扩展

CFAR检测器的单元平均算法在许多情况下都能很好地工作,但不是所有情况。例如,当目标距离很近时,细胞平均可以使强目标掩盖附近的弱目标。这临界.CFARDetector.System Object™支金宝app持以下CFAR检测算法。

算法 典型用法
Cell-averaging CFAR 大多数情况
伟大的cell-averaging CFAR 当重要的是避免在杂乱的边缘处的误报时
最小的细胞平均cfar 当目标接近时
订单统计CFAR. 最大和最小单元平均之间的折中

CFAR检测器的检测概率

此示例显示了如何比较两个CFAR算法所产生的检测概率。在这种情况下,订单统计算法检测到小区平均算法不是的目标。

笔记:此示例仅在R2016b或更高版本中运行。如果您正在使用较早的版本,请将对该函数的每个调用替换为等价的句法。例如,更换myobject(x)步骤(myObject x)

创建使用Cell-verigating CFAR算法的CFAR检测器。

Ntraining = 10;Nguard = 2;Pfa_goal = 0.01;探测器=分阶段。CFARDetector ('方法''CA'......'numtringcells',无行,“NumGuardCells”Nguard,......“ProbabilityFalseAlarm”, Pfa_goal);

检测器具有2个保护单元,10个训练单元,以及0.01的假警报概率。该目的假设一个具有脉冲集成的方法检测器。

基于复值的白色高斯随机变量生成输入数据的向量。

ncell = 23;Ntrials = 100000;inputdata = 1/sqrt(2)*(randn(Ncells,Ntrials)) +......1i * randn(ncells,ntrials));

在输入数据中,替换行8和12以模拟CFAR检测器的两个目标检测。

InputData(8,:)= 3 * exp(1i * 2 * pi * rand);InputData(12,:)= 9 * exp(1i * 2 * pi * rand);

因为该示例实现了平方法则检测器,所以取输入数据向量中元素大小的平方。

Z = abs (inputdata)。^ 2;

在行8到12上执行检测。

z_detect =探测器(z,8:12);

Z_detect矩阵有五行。第一行和最后一行对应于模拟目标。三行相对应噪音。

计算两个目标的检测概率。此外,使用噪声的行估计错误警报的概率。

pd_1 = sum(z_detect(1,:))/ ntrials
Pd_1 = 0
pd_2 = sum(z_detect(end,:))/ ntrials
Pd_2 = 1
PFA = MAX(SUM(Z_DETECT(2:ex-1,:),2)/ ntrial)
Pfa = 6.0000 e-05

0.的价值PD_1指示此检测器不检测第一个目标。

更改CFAR检测器,使其使用排序统计CFAR算法,其秩为5。

释放(探测器);ideter.method =“操作系统”;detector.rank = 5;

重复检测和概率计算。

z_detect =探测器(z,8:12);pd_1 = sum(z_detect(1,:))/ ntrials
Pd_1 = 0.5820
pd_2 = sum(z_detect(end,:))/ ntrials
Pd_2 = 1
PFA = MAX(SUM(Z_DETECT(2:ex-1,:),2)/ ntrial)
PFA = 0.0066.

使用顺序统计算法而不是细胞平均算法,探测器在约58%的试验中检测到第一个目标。