Traitement Des Signaux UAV À L'aide De Matlab Basé Sur Le Système RFUAV
Introduction au tutoriel
Dans le domaine de la sécurité des communications et de la surveillance du spectre, les systèmes d’identification de drones basés sur des données de radiofréquence (RF) ont été largement étudiés. Le projet RFUAV analyse et traite les signaux IQ des drones grâce à l'analyse du spectre et à l'estimation du rapport signal sur bruit. Ce projet utilise MATLAB sur la plate-forme OpenBayes pour implémenter les processus clés de RFUAV, en effectuant des tâches telles que la conversion de données .mat → .dat, la visualisation du spectre, l'estimation du SNR et le découpage de segments.
Ce tutoriel est basé sur le document «RFUAV : un ensemble de données de référence pour la détection et l'identification des véhicules aériens sans piloteReproduire le traitement des données. Les données d'origine n'étant pas encore disponibles, l'ensemble de données présenté ici utilise les données de la plateforme IDLab comme démonstration de traitement. L'ensemble de données étant trop volumineux, ce tutoriel n'en analyse qu'une partie.
Base théorique
Format du signal
- Données sur le QI:La forme complexe est exprimée comme x(t)=I(t)+jQ(t), qui contient l'amplitude et les informations correspondantes.
- données .mat: Le fichier d'origine est stocké dans le champ IQ_samples.
- données .dat: format float32, stockant I et Q en alternance.
Processus d'analyse
- Chargement des données IQ
- Convertir au format .dat
- Tracé du spectre à l'aide de la FFT
- Estimation du rapport signal/bruit à l'aide de la densité spectrale de puissance et du partitionnement des bandes de fréquences
- Recadrage de segments pour l'entraînement du modèle
Procédure
1. Préparation à l'opération
Après avoir cloné et démarré le conteneur, « Ouvrir l'espace de travail » → Ouvrir « Matlab » sur la page de démarrage

2. Conversion des données
2.1 Algorithme de conversion de données (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 Mise en œuvre de la conversion des données
run('main_convert.m')
Générez le fichier AVATA_1.dat sur la gauche

3. Traitement du signal et génération de spectre
3.1 Implémentation du code (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 Résultats du traitement du signal et diagramme spectral

4. Autre traitement de fichiers .mat
Vous pouvez modifier le chemin du fichier mat_path dans main_convert.m vers le fichier que vous devez traiter
