HE/SpectrumSense.m
2024-03-30 16:35:40 +08:00

58 lines
2.1 KiB
Matlab

function [Type,Jam_data,Jam_pos] = SpectrumSense(rx_format,cfgUI)
addpath(genpath('.\JamDetect'));
NFFT = 2048;
PfH = 0.0001;
Pf = 0.001;
fs = 20e6;
operator = cfgUI.JamDetect;
% 干扰检测
y = fft(rx_format(1:NFFT,:));
data_Freuq = y(1:NFFT/2,:);
J = Selecdt_Detection(data_Freuq,Pf,PfH,32,operator);
Type = JudgeTypeJam(J);
% struct jam_data;
jam_data.Num_multi = 0;
jam_data.f_multi = 0;
jam_data.Power_multi = [];
jam_data.Num_band = [];
jam_data.f_start = [];
jam_data.f_end = [];
jam_data.f_wide = [];
jam_data.Power_band = [];
if strcmp(Type,'multi')
[jam_data.Num_multi,jam_data.f_multi,jam_data.Power_multi] = Multi_Parameter(data_Freuq.',J,fs,NFFT);
elseif strcmp(Type,'mono')
[jam_data.f_multi,jam_data.Power_multi] = Mono_Parameter(data_Freuq.',J,fs,NFFT);
elseif strcmp(Type,'band')
[jam_data.Num_band,jam_data.f_start,jam_data.f_end,jam_data.f_wide,jam_data.Power_band] = Band_Parameter(data_Freuq.',J,fs,NFFT);
elseif strcmp(Type,'band_mono')
[jam_data.f_mono,jam_data.Power_mono,jam_data.Num_band,jam_data.f_start,jam_data.f_end,jam_data.f_wide,jam_data.Power_band] = Band_Mono_Parameter(data_Freuq.',J,fs,NFFT);
elseif strcmp(Type,'band_multi')
[jam_data.Num_multi,jam_data.f_multi,jam_data.Power_multi,jam_data.Num_band,jam_data.f_start,jam_data.f_end,jam_data.f_wide,jam_data.Power_band] = Band_Multi_Parameter(data_Freuq.',J,fs,NFFT);
else
disp('No jam!');
end
Jam_data = jam_data.f_multi;
dt=1/fs;
data_abs = 10*log(abs(data_Freuq(J)));
J_freuq=(J-1)/(dt*NFFT)/10^6; % 采样间隔
ssf=(0:NFFT/2-1)/(dt*NFFT); % 频率矢量
data_db=10*log(abs(data_Freuq));
Jam_pos = J_freuq*10^6;
% 取对数
%作图
% plot(ssf,data_db); % 做幅度频谱图
% grid on;
% hold on;
% stem(Jam_pos,data_abs,'m--','filled','MarkerSize',2)
% xlabel('frequency');
% ylabel('magnitude');
% hold off;
% pause(0.5);
% close;
rmpath(genpath('.\JamDetect'));
end