Verarbeitung Von UAV-Signalen Mit Matlab Basierend Auf Dem RFUAV-System
Einführung in das Tutorial
Im Bereich Kommunikationssicherheit und Spektrumüberwachung wurden Drohnenidentifikationssysteme auf Basis von Hochfrequenzdaten (RF) umfassend untersucht. Das RFUAV-Projekt analysiert und verarbeitet die IQ-Signale von Drohnen durch Spektrumanalyse und Schätzung des Signal-Rausch-Verhältnisses. Dieses Projekt verwendet MATLAB auf der OpenBayes-Plattform, um die wichtigsten Prozesse von RFUAV zu implementieren und Aufgaben wie .mat → .dat-Datenkonvertierung, Spektrumvisualisierung, SNR-Schätzung und Segment-Clipping durchzuführen.
Dieses Tutorial basiert auf dem Artikel „RFUAV: Ein Benchmark-Datensatz zur Erkennung und Identifizierung unbemannter Luftfahrzeuge„Datenverarbeitung reproduzieren. Da die Originaldaten noch nicht verfügbar sind, verwendet der Datensatz hier die Daten der IDLab-Plattform als Demonstration der Datenverarbeitung. Da der gesamte Datensatz zu umfangreich ist, analysiert dieses Tutorial nur einen Teil der Daten.“
Theoretische Grundlagen
Signalformat
- IQ-Daten: Die komplexe Form wird als x(t)=I(t)+jQ(t) ausgedrückt und enthält Amplitude und entsprechende Informationen.
- .mat-Daten: Die Originaldatei wird im Feld IQ_samples gespeichert.
- .dat-Daten: Float32-Format, speichert I und Q abwechselnd.
Analyseprozess
- IQ-Daten werden geladen
- In das .dat-Format konvertieren
- Zeichnen des Spektrums mit FFT
- Schätzung des SNR mithilfe der Leistungsspektraldichte und der Frequenzbandpartitionierung
- Segmentzuschneiden für das Modelltraining
Verfahren
1. Vorbereitung für den Betrieb
Nach dem Klonen und Starten des Containers "Open Workspace" → Öffnen Sie "Matlab" auf der Startseite

2. Datenkonvertierung
2.1 Datenkonvertierungsalgorithmus (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 Implementierung der Datenkonvertierung
run('main_convert.m')
Generieren Sie die Datei AVATA_1.dat auf der linken Seite

3. Signalverarbeitung und Spektrumgenerierung
3.1 Code-Implementierung (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 Signalverarbeitungsergebnisse und Spektrumdiagramm

4. Andere .mat-Dateiverarbeitung
Sie können den Dateipfad mat_path in main_convert.m in die Datei ändern, die Sie verarbeiten müssen
