雷达信号处理:恒虚警(CFAR)原理与 MATLAB 实战
恒虚警率(Constant False Alarm Rate, CFAR)是雷达信号处理中自适应阈值目标检测的核心技术。其核心思想在于:无论背景噪声或杂波的功率如何变化,都保持虚警概率 $P_{fa}$ 为一个预先设定的常数。
1. 基本原理与流程
CFAR 算法通过实时估计待检测单元(Cell Under Test, CUT)周围的背景噪声或杂波功率,并根据期望的虚警率 $P_{fa}$ 自适应地确定检测阈值 $T$。
核心流程
- 滑动窗口:在待检测数据(通常是距离 - 多普勒图或距离向数据)上设定一个固定大小的滑动窗口。
- 单元划分:窗口内的单元被划分为三个部分:
- 待检测单元(CUT):位于窗口中心,是我们判断是否包含目标的单元。
- 保护单元(Guard Cells, $G$):紧邻 CUT 两侧,用于防止目标能量泄露污染噪声估计,不参与噪声功率计算。
- 参考/训练单元(Training Cells, $N$):位于保护单元外侧,用于估计背景噪声/杂波的平均功率。
- 门限计算:根据估计的背景功率 $\hat{\sigma}^2$ 和一个比例因子(门限系数)$\alpha$,确定检测阈值 $T$: $$ T = \alpha \cdot \hat{\sigma}^2 $$ 其中,$\alpha$ 是根据期望的虚警率 $P_{fa}$ 和噪声统计分布推导出来的。
- 目标检测:将 CUT 的功率值 $P_{\text{CUT}}$ 与阈值 $T$ 进行比较:
- 如果 $P_{\text{CUT}} \le T$,则判断不存在目标。
- 如果 $P_{\text{CUT}} > T$,则判断存在目标。
2. 常见 CFAR 算法分类
根据参考单元功率的计算方式不同,CFAR 算法可以分为多种类型,以适应不同的杂波环境:
| 算法类型 | 噪声估计方式 | 适用场景 | 关键特点 |
|---|---|---|---|
| CA-CFAR (Cell Averaging) | 对所有参考单元的功率进行算术平均 | 背景噪声/杂波均匀、同性 | 性能最优良的基准算法,但对于多目标或杂波边界性能差 |
| GO-CFAR (Greatest Of) | 分别计算左右侧平均功率,取较大值 | 适用于杂波功率突变(如杂波边界) | 在杂波边界处能有效抑制虚警 |
| SO-CFAR (Smallest Of) | 分别计算左右侧平均功率,取较小值 | 适用于多目标环境 | 避免强目标泄露到训练单元,抬高门限 |
| OS-CFAR (Order Statistic) | 对参考单元功率排序,选取第 $k$ 个值 | 适用于多目标、非均匀杂波环境 | 鲁棒性强,可有效去除训练单元中的干扰目标 |
3. MATLAB 实际用例:CA-CFAR 实现
下面提供一个基于 MATLAB 的单元平均恒虚警率(CA-CFAR)算法的简单实现,用于一维雷达距离向数据检测。这段代码模拟了噪声背景下的目标回波,并展示了自适应阈值的动态调整过程。

