HyperAIHyperAI

Command Palette

Search for a command to run...

基于 RFUAV 系统使用 Matlab 处理无人机信号

日期

10 个月前

大小

127 MB

论文 URL

2503.09033

教程简介

在通信安全与频谱监测中,基于射频 (RF) 数据的无人机识别系统被广泛研究。 RFUAV 项目通过频谱图分析、信噪比估计等手段,对无人机的 IQ 信号进行分析处理。本项目在 OpenBayes 平台上使用 MATLAB 实现 RFUAV 的关键流程,完成 .mat → .dat 数据转换、频谱图可视化、 SNR 估计及分段裁剪等任务。

该教程基于浙江理工大学、杭州电子科技大学等研究团队于 2025 年发布的论文 RFUAV: A Benchmark Dataset for Unmanned Aerial Vehicle Detection and Identification 进行数据处理复现,由于原始数据暂未提供,此处数据集选用 IDLab 平台的数据作为数据处理演示。因完整数据集过于庞大,本教程仅对其中部分数据进行分析。

理论基础

信号格式

  • IQ 数据:复数形式表示为 x(t)=I(t)+jQ(t),包含幅度与相应信息。
  • .mat 数据:原始文件存储在 IQ_samples 字段中。
  • .dat 数据:float32 格式,交替存储 I 和 Q 。

分析流程

  • 加载 IQ 数据
  • 转换为.dat 格式
  • 使用 FFT 绘制频谱
  • 使用功率谱密度和频带划分估计 SNR
  • 分段裁剪以供模型训练

操作步骤

1. 运行准备

克隆并启动容器后,「打开工作空间」→在启动页打开「Matlab」

4

2. 数据转换

2.1 数据转换算法 (main_convert.m)

% 设置路径
mat_path = 'lorasf12_g0.0dB_att24dB_freq867.4MHz_4.mat';   % 当前目录
dat_path = 'AVATA_1.dat';     % 输出 .dat 文件名

% 加载 .mat 文件
mat_data = load(mat_path);
disp(fieldnames(mat_data))  % 显示变量名,确认变量存在

% 正确提取变量
iq = mat_data.IQ_samples;

% 转换为 float32 类型,并交替存储 I 和 Q
iq_float32 = single([real(iq(:)).'; imag(iq(:)).']);  % 交错排列为 I1 Q1 I2 Q2 ...

% 保存为 .dat 文件
fid = fopen(dat_path, 'w');
fwrite(fid, iq_float32, 'float32');
fclose(fid);

fprintf('转换完成,.dat 文件保存至: %s\n', dat_path);

2.2 数据转换实现

run('main_convert.m')

生成左侧 AVATA_1.dat 文档

6

3. 信号处理与频谱图生成

3.1 代码实现 (main.m)

% main.m
clc; clear;
addpath('tools');  % 添加工具函数路径

% 参数设置
data_path = 'AVATA_1.dat';  % 替换为实际上传的文件路径
fs = 100e6;          % 采样率
nfft = 512;          % FFT 点数
duration = 0.1;      % 时长 0.1s
datatype = 'float32';

% 频谱图显示
fprintf('>>> 可视化频谱图\n');
fig = check(data_path, nfft, fs, duration, datatype);
saveas(fig, 'spectrum_AVATA_1.png');

% 读取 IQ 数据
fid = fopen(data_path, 'rb');
dataIQ = fread(fid, 'float32');
fclose(fid);

% 信噪比估计
fprintf('>>> 信噪比估计\n');
bw = 2e6;
[idx1, idx2, idx3, idx4, f1, f2] = positionFind(dataIQ, fs, bw, nfft);
snr_val = snrEsti(dataIQ, fs, nfft, f1, f2, idx1, idx2, idx3, idx4);
fprintf('Estimated SNR: %.2f dB\n', snr_val);

% 分段裁剪
fprintf('>>> 开始数据分段...\n');
rawdata_crop(data_path, 2, fs);  % 每段 2 秒

3.2 信号处理结果与频谱图

7

4. 其他 .mat 文件处理

可将 main_convert.m 中的 mat_path 文件路径更改为自己需要处理的文件

8

用 AI 构建 AI

从创意到上线——通过免费 AI 协同编码、开箱即用的环境和最优惠的 GPU 价格,加速您的 AI 开发。

AI 协同编码
开箱即用的 GPU
最优定价

HyperAI Newsletters

订阅我们的最新资讯
我们会在北京时间 每周一的上午九点 向您的邮箱投递本周内的最新更新
邮件发送服务由 MailChimp 提供