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 파일 경로를 처리해야 하는 파일로 변경할 수 있습니다.
