主要内容

恒虚警率(CFAR)探测器

CFAR检测器的误报率

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

为了激发对适应性程序的需求,假设一个简单的二元假设测试,你必须在单个样本的信号缺失和信号存在假设之间做出决定。信号振幅为4,噪声为单位方差的零均值高斯。

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

x = 4 + w$}

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

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

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

Pfa = 0.5*erfc((threshold-4)/sqrt(2))
Pfa = 1.0000e-03 pd = 0.8185

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

pfa = 0.5 *误差补函数(阈值/ 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}(数量级)的增加”)包含(“噪音功率增加(分贝)”

Cell-Averaging CFAR检测器

单元平均CFAR检测器估计感兴趣的距离单元的噪声方差,或单元测试下,通过分析指定为培养细胞.假设训练单元的噪声特性与被测单元(CUT)的噪声特性相同。

这个假设是证明使用训练单元来估计CUT中的噪声方差的关键。此外,细胞平均CFAR检测器假设训练细胞不包含任何来自目标的信号。因此,假定训练单元中的数据仅由噪声组成。

为了使这些假设更现实:

  • 最好有一些缓冲,或者保卫细胞在CUT和训练小组之间。由保卫细胞提供的缓冲警卫防止信号泄漏到训练单元,对噪声方差的估计产生不利影响。

  • 训练单元不应表示距离CUT太远的距离单元,如下图所示。

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

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

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

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

    请注意

    如果你用Z = U +企业,大小的平方Z | |2服从平均σ的指数分布2

如果训练单元中的样本是复高斯房车的平方大小,则可以使用样本均值作为噪声方差的估计值。

要实现单元平均CFAR检测,请使用分阶段。CFARDetector.您可以自定义检测器的特征,如训练细胞和保卫细胞的数量,以及误报警的概率。

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

这个示例展示了如何创建CFAR检测器并测试其适应输入数据统计的能力。该测试只使用噪音测试。通过使用默认的平方律检测器,您可以确定经验误报率与期望的误报概率有多接近。

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

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

探测器=分阶段。CFARDetector (“NumGuardCells”2,...“NumTrainingCells”, 20岁,“ProbabilityFalseAlarm”1 e - 3);

两边各有10个训练室和1个警卫室单元测试下(减少)。设置CUT索引为12。

CUTidx = 12;

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

rng (1000);

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

Ntrials = 1 e4;方差= 0.25;ncell = 23;inputdata =√方差/ 2)* (randn (ncell Ntrials) + 1 j * randn (ncell Ntrials));

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

Z = abs (inputdata)。^ 2;

将平方律运算符的输出和被测单元格的索引提供给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系统对象™支持以下CFAR检测万博1manbetx算法。

算法 典型用法
Cell-averaging CFAR 大多数情况下
伟大的cell-averaging CFAR 当很重要的时候,要避免在杂乱的边缘出现误报
最小的cell-averaging CFAR 当目标接近时
顺序统计量CFAR 最大和最小单元平均之间的折中

CFAR检测器的检测概率

这个例子展示了如何比较两种CFAR算法的检测概率。在这个场景中,顺序统计算法检测到单元格平均算法没有检测到的目标。

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

创建一个使用单元平均CFAR算法的CFAR检测器。

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

探测器有2个警卫单元,10个训练单元,虚警概率为0.01。该对象采用无脉冲积分的平方律检测器。

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

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

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

: inputdata(8日)= 3 * exp(1 * 2 *π*兰德);: inputdata(12日)= 9 * exp(1 * 2 *π*兰德);

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

Z = abs (inputdata)。^ 2;

在第8行到第12行执行检测。

Z_detect =检测器(Z, 8:12);

Z_detect矩阵有5行。第一行和最后一行对应于模拟的目标。中间的三行对应着噪音。

计算两个目标的探测概率。此外,估计假警报的概率使用噪声仅行。

Pd_1 =总和(Z_detect (1:)) / Ntrials
Pd_1 = 0
Pd_2 =总和(Z_detect(最终,:))/ Ntrials
Pd_2 = 1
Pfa = max(总和(Z_detect (2: end-1,:), 2) / Ntrials)
Pfa = 6.0000 e-05

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

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

释放(探测器);探测器。方法=“操作系统”;探测器。排名= 5;

重复检测和概率计算。

Z_detect =检测器(Z, 8:12);Pd_1 =总和(Z_detect (1:)) / Ntrials
Pd_1 = 0.5820
Pd_2 =总和(Z_detect(最终,:))/ Ntrials
Pd_2 = 1
Pfa = max(总和(Z_detect (2: end-1,:), 2) / Ntrials)
Pfa = 0.0066

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