RFUAV システムに基づく Matlab を使用した UAV 信号の処理
チュートリアルの紹介
通信セキュリティとスペクトル監視の分野では、無線周波数 (RF) データに基づくドローン識別システムが広く研究されてきました。 RFUAV プロジェクトは、スペクトル分析と信号対雑音比の推定を通じてドローンの IQ 信号を分析および処理します。このプロジェクトでは、OpenBayes プラットフォーム上の MATLAB を使用して RFUAV の主要プロセスを実装し、.mat → .dat データ変換、スペクトルの視覚化、SNR 推定、セグメント クリッピングなどのタスクを完了します。
このチュートリアルは、論文「RFUAV: 無人航空機の検出と識別のためのベンチマークデータセットデータ処理を再現します。元のデータはまだ入手できないため、ここでのデータセットでは、データ処理のデモンストレーションとしてIDLabプラットフォームのデータを使用しています。データセット全体が大きすぎるため、このチュートリアルではデータの一部のみを分析します。
理論的根拠
信号フォーマット
- IQデータ: 複素形式は x(t)=I(t)+jQ(t) として表され、振幅と対応する情報を含みます。
- .matデータ: 元のファイルは IQ_samples フィールドに保存されます。
- .datデータ: float32 形式で、I と Q を交互に格納します。
分析プロセス
- IQデータの読み込み
- .dat形式に変換する
- FFTを使用してスペクトルをプロットする
- パワースペクトル密度と周波数帯域分割を用いたSNRの推定
- モデルトレーニングのためのセグメントクロッピング
操作手順
1. 手術の準備
コンテナのクローン作成と起動後、起動ページで「ワークスペースを開く」→「Matlab」を開く

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ファイルを生成します

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 信号処理結果とスペクトル図

4. その他の.matファイル処理
main_convert.mのmat_pathファイルパスを、処理する必要があるファイルに変更できます。
