HyperAI

معالجة إشارات الطائرات بدون طيار باستخدام Matlab استنادًا إلى نظام RFUAV

مقدمة البرنامج التعليمي

في مجال أمن الاتصالات ومراقبة الطيف، تمت دراسة أنظمة تحديد هوية الطائرات بدون طيار القائمة على بيانات التردد اللاسلكي (RF) على نطاق واسع. يقوم مشروع RFUAV بتحليل ومعالجة إشارات IQ للطائرات بدون طيار من خلال تحليل الطيف وتقدير نسبة الإشارة إلى الضوضاء. يستخدم هذا المشروع MATLAB على منصة OpenBayes لتنفيذ العمليات الرئيسية لـ RFUAV، واستكمال المهام مثل تحويل البيانات .mat → .dat، وتصور الطيف، وتقدير نسبة الإشارة إلى الضوضاء، وقص القطاعات.

يعتمد هذا البرنامج التعليمي على الورقة "RFUAV: مجموعة بيانات مرجعية لكشف وتحديد هوية المركبات الجوية غير المأهولةإعادة إنتاج معالجة البيانات. بما أن البيانات الأصلية غير متوفرة بعد، فإن مجموعة البيانات هنا تستخدم بيانات منصة IDLab كعرض توضيحي لمعالجة البيانات. ولأن مجموعة البيانات الكاملة كبيرة جدًا، فإن هذا البرنامج التعليمي يحلل جزءًا فقط من البيانات.

الأساس النظري

تنسيق الإشارة

  • بيانات الذكاء:يتم التعبير عن الشكل المركب على النحو التالي 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 الأخرى

يمكنك تغيير مسار ملف mat_path في main_convert.m إلى الملف الذي تحتاج إلى معالجته

8