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

74 lines
2.4 KiB
Matlab
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

%%************************【频带干扰输出参数函数】****************************%%
%%=============================参数说明===================================%%
% J 检测出来的干扰点集合
% Power_multi 多音干扰功率集合
% f_multi 频带干扰频率集合
% Num_multi 多音干扰个数
% Power_band 频带干扰功率
% f_wide 频带干扰带宽
% f_start频带起始频率
% f_end频带截止频率
% Num_band 频带干扰个数
% data 频域数据
% fs 采样频率
%%========================================================================%%
function [Num_multi,f_multi,Power_multi,Num_band,f_start,f_end,f_wide,Power_band] = Band_Multi_Parameter(data,J,fs,NFFT)
J = sort(J,'ascend')-1;
len_J = length(J);
f_start = [];
f_end = [];
c1=1;
mono_d = cell(0,0);
mono_s = cell(0,0);
mono = [];
f_d = [];
f_s = [];
power_m = [];
power_d = [];
power_s = [];
band = cell(0,0);
while c1 < len_J
c2 = 0;
while (c1 + c2 + 1 <= len_J && J(c1) + c2 + 1==J(c1 + c2 + 1))
c2 = c2 + 1;
end
if(c2 > 2)
band = [band;(J(c1:1:c1+c2))]; %%连续点超过3记为频带干扰
end
if c2 == 2
mono_d = [mono_d;(J(c1:1:c1+c2))]; %%频谱扩散的单音
end
if c2 == 1
mono_s = [mono_s;(J(c1:1:c1+c2))];
end
if c2 == 0
mono = [mono,J(c1)];
end
c1 = c1 + c2 +1;
if c1 == len_J && J(len_J-1) + 1 ~= J(len_J)
mono = [mono,J(len_J)];
end
end
for k = 1:numel(mono_d)
f_d(k) = mono_d{k}(2)*fs/NFFT/10^6;
power_d(k) = sum(abs(data(mono_d{k}+1)).^2)/NFFT^2;
end
for m = 1:numel(mono_s)
f_s(m) = 0.5*(mono_s{m}(1)+mono_s{m}(2))*fs/NFFT/10^6;
power_s(m) = sum(abs(data(mono_s{m}+1)).^2)/NFFT^2;
end
power_m = abs(data(mono+1)).^2/NFFT^2;
mono = mono*fs/NFFT/10^6;
power_multi1 = [power_m,power_d,power_s];
f_multi1 = [mono,f_d,f_s];
[f_multi,index] = sort(f_multi1,'ascend');
Power_multi =power_multi1(index);
Num_multi = length(f_multi1);
for k = 1 : numel(band)
f_start(k) = band{k}(1)*fs/NFFT/10^6;
f_end(k) = band{k}(end)*fs/NFFT/10^6;
end
f_wide =sum( abs(f_start - f_end));
Power_band = 2*sum(abs(data(J+1)).^2)/NFFT^2;
Num_band = length(f_end);
end