%%************************【频带干扰输出参数函数】****************************%% %%=============================参数说明===================================%% % 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