%%************************【多音干扰输出参数函数】****************************%% %%=============================参数说明===================================%% % J 检测出来的干扰点集合 % data 频域数据 % fs 采样频率 % NFFT FFT点数 % Power_multi 多音干扰功率集合 % f_multi 多音干扰频率集合 % Num_multi 多音干扰个数 %%========================================================================%% function [Num_multi,f_multi,Power_multi] = Multi_Parameter(data,J,fs,NFFT) J = sort(J,'ascend')-1; len_J = length(J); mono_d = cell(0,0); mono_s = cell(0,0); mono = []; f_d = []; f_s = []; power_m = []; power_d = []; power_s = []; c1 = 1; 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 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); end