HyperAI超神経

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」を開く

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