MATLAB实战(21):基于射频信号与深度学习的无人机检测识别:MATLAB完整实现
背景消费级无人机普及后,"黑飞"问题日益突出。雷达对小尺寸无人机效果有限,视觉方案受天气光照影响大。利用无人机与遥控器之间的通信射频信号做被动检测,成本低、部署隐蔽,是近年来的研究热点。本文基于 Al-Sa’d 等人在Future Generation Computer Systems(2019)上发表的 DroneRF 框架,用 MATLAB 实现了一个完整的无人机 RF 检测与识别系统。程序是单文件、自包含的,不需要外部数据即可运行,同时集成了设计代码、测试代码和 7 组可视化图表。1 系统整体设计1.1 参数配置参数值说明采样率40 MHz覆盖 2.4 GHz ISM 频段每段样本数100,0002.5 ms 时间窗口FFT 点数2048频率分辨率约 19.5 kHz拼接校准点10L/H 频段衔接处校准采样数输出特征维数2048拼接后频谱 bin 总数类别数10Level-3 细粒度每类样本数30总计 300 样本隐藏层结构[64, 32, 16]3 层全连接1.2 检测类别系统实现的是三层分类体系中的 Level-3(10 类细粒度分类):类别 1:RF 背景活动(无无人机)类别 2-5:Bebop 无人机 4 种飞行模式类别 6-9:AR Drone 无人机 4 种飞行模式类别 10:Phantom 无人机Level-1(2 类:有/无无人机)和 Level-2(4 类:背景/Bebop/AR/Phantom)可以通过合并对应标签得到,本文不再赘述。2 核心算法2.1 双频段频谱拼接硬件采集时,RF 信号被分成了两路:低频段(L-band,0-40 MHz)和高频段(H-band,40-80 MHz)。要在 0-80 MHz 的完整频段上做分析,必须先把两段频谱拼起来。直接在分界处强行拼接会产生幅度跳变,因为两路采集通道的增益不完全一致。解决方法是在频率重叠区取少量采样点做幅度校准:设XfX_fXf为低频段频谱(长度M/2=1024M/2 = 1024M/2=1024),YfY_fYf为高频段频谱(同长度)。取重叠区Q=10Q = 10Q=10个点计算比例因子:α=mean(Xf[M/2−Q+1:M/2])mean(Yf[1:Q])\alpha = \frac{\text{mean}(X_f[M/2-Q+1 : M/2])}{\text{mean}(Y_f[1 : Q])}α=mean(Yf[1:Q])mean(Xf[M/2−Q+1:M/