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