A list,
1 CDIF algorithm2. Disadvantages of CDIF algorithm
Part of the source code
Clear all CLC close all % Start sorting subroutine %sig Input signal flow %slen Input signal flow length %n Sampling time %pw_id Whether to consider pulse width jitter flag % pw_Ratio Pulse width jitter rate % Output parameter % PW Signal pulse width %pnum Number of signal pulse width % TOA signal arrival time % TNum Signal arrival time % sdif_para.pw_id=1; %% Whether to consider the pulse width jitter flag % sDIF_para. pw_fixr=0.1; %% Sorting tolerance limit fixed % sdif_para.pw_ranr=0.01; %% Change of tolerance for sorting veins % sdif_para.pri_id=1; %% Whether to consider the jitter flag of pulse repetition period. % sDIF_para.pri_fixr =20; %% Sorting repetition period tolerance is fixed % sdif_para. Pri_ranr =0.01; %% Sorting repetition cycle tolerance change % sdif_para.gate=0.5; %% Histogram threshold % sdif_para.step=1; %% sorting series % variable initialization PRI1=150e-006; % Unit US A =0.05;
b=a*PRI1*2*(rand0.5);
t1=1:126;
% z1=PRI1*t1+0.000223+b;
z1=PRI1*t1+2.23 e-006;
% z11=z1+z1.*(12 -*rand(1.126)) *0.01;
PRI2=240e-006;
t2=1:78;
z2=PRI2*t2+11e-006;
PRI3=370e-006;
t3=1:50;
z3=PRI3*t3+0.120 e-006;
sig=[z1,z2,z3];
dd=0; %dd=1e-3; % Sets the jitter degree0.1%
jitter=(12 -*rand(1.254))*dd; sig=sig+sig.*jitter; % for each pulse TOA plus random jitter sig=sort(sig); The program above % is used to generate the arrival time of the interleaved pulse train, which consists of three radars. % storage calculates the different pri sort_para.pnum=1;
sort_para.tnum=254;
sort_para.toa=sig;
sdif_para.pri_fixr=2e-005;
sdif_para.step=3;
sdif_para.pri_id=1;
sdif_para.gate=0.4;
%[sort_bank]=sdif_picture(sort_para,sdif_para)
time=370e-005; % Sampling time Maximum repetition period10Times, fs =250e006; % sampling frequency toa_cdif=sort_para.toa; tnum_cdif=sort_para.tnum; % call out to use the modified parameter sig_num=1;
pri_num=0;
pri=0;
pri_total=0;
sig_total=0;
sort_id=0;
c=1;
tem_pri=0;
gate_num=0;
pri_oncenum=0;
pri_oncevalue=0;
pri_twicenum=0;
pri_twicevalue=0;
pri_search=0;
pri_searchnum=0;
search_num=1;
search_id=0;
tem_toa=0;
sortok_id=0;
sortok_id1=0; % Parameter coeff1= that may be adjusted0.4;
coeff2=1.0;
series=5; % do c at most- 1Differential L =6; % Signals are sorted according to TOA data under root nodes of different pulse widthfor i=1:sort_para.pnum % Initialize the variable pri_num=0;
pri=0;
pri_total=0;
sig_total=0;
c=1; % sorting serieswhile( (tnum_cdif(i)>5)&&(c<series)) %TOA number greater than5The number of pulses is greater than5
tnum1=tnum_cdif(i)-c;
for j=1:tnum1
if toa_cdif(i,j+c)>toa_cdif(i,j)
tem_pri=toa_cdif(i,j+c)-toa_cdif(i,j);
else
tem_pri=0;
end
if pri_num==0
pri_num=1; pri(pri_num)=tem_pri; %pri
pri_total(pri_num)=1; % Different amount of prielse
for k=1:pri_num
if (tem_pri>=pri(k)-2e-006)&&(tem_pri<=pri(k)+2e-006)% Tolerance pri_total(k)= PRI_total (k)+1;
break;
end
if k==pri_num
pri_num=k+1;
pri(pri_num)=tem_pri;
pri_total(pri_num)=1; End end end end % # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # % pri first by size orderif pri_num>1
for m=1:pri_num- 1
for n=m+1:pri_num
ifpri(m)>pri(n) tem_data=pri(m); pri(m)=pri(n); pri(n)=tem_data; tem_data=pri_total(m); pri_total(m)=pri_total(n); pri_total(n)=tem_data; End end end end % # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # % # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # first orderCDIF
if(c==1)
xpri= (1e-006:1e-003:400);
y=coeff1*time*10^6./xpri; %coeff1*time*10^6
figure(1) plot(xpri,y) %'First order CDIF graph');
xlabel('PRI/us'); ylabel('number');
axis([0 400 0 40]);
hold on
plot(pri*10^6,pri_total,'* -')
axis([0 400 0 50]); Hold off end %############################## Draw second orderCDIF
if(c==2)
xpri= (1e-006:1e-003:400);
y=coeff1*time*10^6./xpri; %coeff1*time*10^6
figure(2) plot(xpri,y) %'Second order CDIF diagram');
xlabel('PRI/us'); ylabel('number');
axis([0 400 0 40]);
hold on
plot(pri*10^6,pri_total,'* -')
axis([0 400 0 50]); Hold off end %############################## Draw the third stepCDIF
if(c==3)
xpri= (1e-006:1e-003:400);
y=coeff1*time*10^6./xpri; %coeff1*time*10^6
figure(3) plot(xpri,y) %'Third order CDIF graph');
xlabel('PRI/us'); ylabel('number');
axis([0 400 0 40]);
hold on
plot(pri*10^6,pri_total,'* -')
axis([0 400 0 50]); Hold off end %############################## Draw the fourth stepCDIF
if(c==4)
xpri= (1e-006:1e-003:400);
y=coeff1*time*10^6./xpri; %coeff1*time*10^6
figure(4) plot(xpri,y) %'Fourth order CDIF Diagram');
xlabel('PRI/us'); ylabel('number');
axis([0 400 0 40]);
hold on
plot(pri*10^6,pri_total,'* -')
axis([0 400 0 40]); Hold off end % then pick out the pri with a double relationship and get the number to compare with the thresholdif(pri_num>1)
m=1;
while m<=pri_num- 1
n=m+1;
while n<=pri_num
if (( pri(n)>=2*pri(m)-3e-006 ) && ( pri(n)<=2*pri(m)+3e-006Pri_oncenum =pri_total(m); pri_oncevalue=pri(m); pri_twicenum=pri_total(n); pri_twicevalue=pri(n); n=n+1;
%if(( pri_oncenum>((coeff1*time*fs/pri_oncevalue)) ) && ( pri_twicenum>(coeff2*time*fs/pri_twicevalue)) )% COEFF1 *time* FS/PRI_ONCevalUE Threshold, which is adjustableif(( pri_oncenum>((coeff1*time/pri_oncevalue)) ) && ( pri_twicenum>(coeff1*time/pri_twicevalue)) )%coeff1*time*fs/ PRI_ONCEVALue threshold, adjustable pri_search(search_num)= PRI_ONCEVALue; pri_searchnum(search_num)=pri_oncenum; search_num=search_num+1;
search_id=1;
end
else
n=n+1;
end
end
m=m+1; End end % # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # % search flags, determine whether the searchif(search_id>0)
search_id=0;
for m=1:search_num- 1
gate_num=0;
for n=1: tnum_cDIf (I) % Continuous search6A pulse tem_toa = pri_search (search_num- 1)+toa_cdif(i,n);
for ii=n+1:tnum_cdif(i)
if (tem_toa>=toa_cdif(i,ii)-3e-006)&&(tem_toa<=toa_cdif(i,ii)+3e-006)% change the original3Ii from2Start gate_num = gate_num +1;
end
end
L=6; % of the original8
if gate_num>5nn=n; % forward and backward searchfor p=nn+6:- 1:2% Forward search tem_toA = toA_cDIf (I,p)-pri_search(search_num)- 1);
for ww=p- 1:- 1:2
if (tem_toa>=toa_cdif(i,ww)-5e-006)&&(tem_toa<=toa_cdif(i,ww)+5e-006) % to mend the original5
sig_total=sig_total+1;
data(sig_num,sig_total)=toa_cdif(i,ww);
end
end
end
Copy the code
Third, the operation result
Fourth, note
Version: 2014 a