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