复杂场景下的雷达信号处理与目标跟踪仿真系统 - README
1. 项目介绍
本项目构建了一个高保真的脉冲多普勒(Pulse Doppler, PD)雷达信号处理全链路仿真平台。该系统旨在验证雷达算法在噪声和杂波环境下的稳健性,模拟了从雷达回波信号产生、信号预处理、杂波抑制、恒虚警检测(CFAR)到目标点迹提取与卡尔曼滤波跟踪的完整流程。项目代码基于MATLAB开发,适用于雷达系统参数设计验证及算法教学演示。
2. 主要功能特性
- 全链路仿真:涵盖信号产生、脉冲压缩、MTD处理、CFAR检测、数据关联与跟踪评估。
- 环境建模:包含热噪声建模及基于功率谱加权的相关高斯杂波(地/海杂波)建模。
- 目标模拟:支持多目标设置,包含Swerling RCS起伏模型(慢起伏与快起伏)及不同的运动轨迹(匀速、机动)。
- 信号处理:实现了频域匹配滤波(脉冲压缩)与加窗处理,有效抑制旁瓣。
- 多普勒处理:主要采用动目标检测(MTD)算法,通过慢时间维度的FFT及切比雪夫加窗提取速度信息。
- 检测与跟踪:集成2D CA-CFAR自适应阈值检测,并结合最近邻(NN)关联与卡尔曼滤波进行航迹平滑。
- 性能评估:实时计算均方根误差(RMSE)并统计检测概率(Pd)与虚警数。
3. 系统要求与使用方法
- 开发环境:MATLAB R2020b 或更高版本。
- 工具箱依赖:需要 Signal Processing Toolbox(用于窗函数、滤波等操作)。
- 运行方式:
1. 确保工作路径包含
main.m 及相关辅助函数文件。
2. 直接运行
main 函数即可启动仿真。
3. 控制台将输出系统参数初始化信息、每帧的仿真进度及检测到的目标数量。
4. 详细代码实现逻辑 (main.m)
代码执行流程严格遵循雷达信号处理链,主要包含以下逻辑阶段:
4.1. 初始化与参数配置
- 脚本开头通过
rng(1024) 设置随机种子,确保仿真结果具有可复现性。 - 系统参数:配置X波段(10GHz)载频,30MHz带宽,64个脉冲组成的相干处理间隔(CPI),以及满足奈奎斯特采样定理的采样率。
- 目标初始化:定义了两个典型目标,Target 1为Swerling 1型(慢起伏)做匀速运动,Target 2为Swerling 3型做机动运动。
- 容器初始化:预分配用于存储真实轨迹、量测数据、估计状态和RMSE统计的历史记录结构体。
4.2. 主仿真循环
程序通过
while 或
for 循环按帧(时间步)推进,每一帧代表一个CPI的处理过程:
第一步:目标状态更新
调用内部逻辑更新目标的物理位置(基于速度和时间间隔),并记录当前的真实位置(Ground Truth)。
第二步:回波信号建模 (GenerateRadarEcho)
- 生成基底噪声:功率受
Env.NoisePower 控制的复高斯白噪声。 - 生成杂波:通过在频域对复高斯噪声应用高斯谱(Gaussian Spectrum)滤波器,模拟具有时间相关性的瑞利分布杂波,并根据杂波目标比(TCR)调整功率。
- 生成目标回波:依据雷达方程计算回波幅度(包含路径损耗和RCS起伏),利用LFM信号模型结合目标的距离延迟和多普勒频移生成相位信息。
第三步:信号预处理 (脉冲压缩)
- 构建参考信号:生成与发射信号参数一致的理想线性调频信号。
- 频域匹配滤波:对参考信号加Hamming窗以抑制距离旁瓣,然后利用FFT/IFFT实现快速卷积,显著提高信噪比和距离分辨率。
第四步:动目标检测 (MTD)
- 虽然代码中保留了三脉冲对消器(MTI)的注释,但实际逻辑主要执行MTD处理。
- 对慢时间维度(脉冲维)的数据应用切比雪夫窗(Chebyshev Window)以控制多普勒旁瓣,随后进行FFT变换,得到距离-多普勒(Range-Doppler)二维图谱。
第五步:恒虚警检测 (CFAR)
- 采用单元平均恒虚警检测器(CA-CFAR)处理RD图谱。
- 设置保护单元、参考单元和虚警概率(Pfa),自适应计算检测门限,输出二值化的检测结果。
第六步:量测提取与数据关联
- 量测转换:从CFAR结果中提取目标的斜距和径向速度。
- 模拟测角:由于仿真器主要处理RD数据,代码采用了一种“仿真特权”策略,通过寻找最近的真实目标来模拟雷达的测角过程,并人为添加测角噪声,最终转换为笛卡尔坐标系下的(x, y)量测值。
- 虚警统计:未关联到真实目标的检测点被计为虚警。
第七步:跟踪与评估
- 调用
UpdateTracker 函数(基于卡尔曼滤波)利用当前量测更新目标航迹状态。 - 计算估计位置与真实位置之间的欧氏距离,统计均方根误差(RMSE)。
4.3. 可视化
仿真结束后,调用
VisualizeResults 函数对脉冲压缩结果、RD图谱、CFAR检测结果以及最终的航迹跟踪效果进行绘图展示。
5. 关键算法与实现细节
代码采用频域实现方式,相比时域卷积效率更高。为了解决匹配滤波带来的旁瓣问题,在频域参考信号上加了Hamming窗,权衡了主瓣宽度与旁瓣电平。
代码没有使用简单的加性高斯白噪声作为杂波,而是通过
fft ->
spectral weighting ->
ifft 的过程生成了“色噪声”。这种方法正确地模拟了杂波的频谱特性(通常为低通特性),使得杂波在多普勒域集中在零频附近,验证了MTD/MTI滤波器的必要性。
在进行多普勒维度的FFT之前,代码使用了
chebwin(切比雪夫窗)。这是雷达信号处理中的关键步骤,用于防止强杂波(如地杂波)的能量通过多普勒旁瓣泄漏到目标所在的多普勒通道,从而淹没微弱目标。
代码实现了2D CA-CFAR,这意味着参考单元不仅在距离维上滑动,也在多普勒维上滑动,这种处理方式更适合复杂的RD图谱背景。
代码中包含一段特殊的逻辑:
if best_idx > 0 ... true_az + noise。这说明该仿真主要是为了验证信号处理链路(距离-多普勒),对于角度测量采用了简化的模拟方式,即利用真值辅助生成带噪的角度观测,从而完成后续的TWS(Track While Scan)跟踪演示。