雷达通信基于matlab CDIF算法雷达信号分选含Matlab源码 1186期
Posted 紫极神光
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了雷达通信基于matlab CDIF算法雷达信号分选含Matlab源码 1186期相关的知识,希望对你有一定的参考价值。
一、简介
二、部分源代码
clear all
clc
close all
%开始分选子程序
%sig 输入信号流
%slen 输入信号流长度
%n 采样时间
%pw_id 是否考虑脉宽抖动标志
%pw_ratio 脉宽抖动率
%输出参数
%pw 信号脉宽
%pnum 信号脉宽个数
%toa 信号到达时间
%tnum 信号达到时间个数
% sdif_para.pw_id=1;%%是否考虑脉宽抖动标志
% sdif_para.pw_fixr=0.1;%%分选脉宽容限 固定
% sdif_para.pw_ranr=0.01;%%分选脉宽容限 变化
% sdif_para.pri_id=1;%%是否考虑脉冲重复周期抖动标志
% sdif_para.pri_fixr=20;%%分选重复周期容限 固定
% sdif_para.pri_ranr=0.01;%%分选重复周期容限 变化
% sdif_para.gate=0.5;%%直方图门限值
% sdif_para.step=1;%%分选级数
%变量初始化
PRI1=150e-006;%单位us
a=0.05;
b=a*PRI1*2*(rand-0.5);
t1=1:126;
% z1=PRI1*t1+0.000223+b;
z1=PRI1*t1+2.23e-006;
% z11=z1+z1.*(1-2*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.120e-006;
sig=[z1,z2,z3];
dd=0; %dd=1e-3; %设置抖动程度0.1%
jitter=(1-2*rand(1,254))*dd;
sig=sig+sig.*jitter; %为每个脉冲的TOA加随机抖动
sig=sort(sig);
%以上程序用于生成交错脉冲序列到达时间,交错脉冲序列由三部雷达组成
dif_pri=[];%存储计算出各种不同的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;%采样时间最大重复周期10倍,
fs=250e006;%采样频率
toa_cdif=sort_para.toa;
tnum_cdif=sort_para.tnum;%调出要使用修改的参数
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;
%可能要调节的参数
coeff1=0.4;
coeff2=1.0;
series=5;%最多做c-1级差
L=6;
%按照不同脉宽根节点下的TOA数据进行信号分选
for i=1:sort_para.pnum
%变量初始化
pri_num=0;
pri=0;
pri_total=0;
sig_total=0;
c=1; %分选级数
while( (tnum_cdif(i)>5)&&(c<series) ) %TOA个数大于5个 脉冲数大于5
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;%不同的pri的不同的数量
else
for k=1:pri_num
if (tem_pri>=pri(k)-2e-006)&&(tem_pri<=pri(k)+2e-006)%改过容限
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按从小到大的顺序排列
if pri_num>1
for m=1:pri_num-1
for n=m+1:pri_num
if pri(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
%##############################
%##############################画一阶CDIF
if(c==1)
xpri=(1e-006:1e-003:400);
y=coeff1*time*10^6./xpri;%coeff1*time*10^6
figure(1)
plot(xpri,y) %门限
title('一阶CDIF图');
xlabel('PRI/us');ylabel('个数');
axis([0 400 0 40]);
hold on
plot(pri*10^6,pri_total,'*-')
axis([0 400 0 50]);
hold off
end
%##############################画二阶CDIF
if(c==2)
xpri=(1e-006:1e-003:400);
y=coeff1*time*10^6./xpri;%coeff1*time*10^6
figure(2)
plot(xpri,y) %门限
title('二阶CDIF图');
xlabel('PRI/us');ylabel('个数');
axis([0 400 0 40]);
hold on
plot(pri*10^6,pri_total,'*-')
axis([0 400 0 50]);
hold off
end
%##############################画三阶CDIF
if(c==3)
xpri=(1e-006:1e-003:400);
y=coeff1*time*10^6./xpri;%coeff1*time*10^6
figure(3)
plot(xpri,y) %门限
title('三阶CDIF图');
xlabel('PRI/us');ylabel('个数');
axis([0 400 0 40]);
hold on
plot(pri*10^6,pri_total,'*-')
axis([0 400 0 50]);
hold off
end
%##############################画四阶CDIF
if(c==4)
xpri=(1e-006:1e-003:400);
y=coeff1*time*10^6./xpri;%coeff1*time*10^6
figure(4)
plot(xpri,y) %门限
title('四阶CDIF图');
xlabel('PRI/us');ylabel('个数');
axis([0 400 0 40]);
hold on
plot(pri*10^6,pri_total,'*-')
axis([0 400 0 40]);
hold off
end
%再将具有两倍关系的pri挑出来,并且将个数得到,以便与门限比较
if(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-006 )) %改过容限
pri_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门限值,可调
if (( pri_oncenum>((coeff1*time/pri_oncevalue)) ) && ( pri_twicenum>(coeff1*time/pri_twicevalue)) )%coeff1*time*fs/pri_oncevalue门限值,可调
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
%###############################
%检测搜索标志位,判断是否搜索
if(search_id>0)
search_id=0;
for m=1:search_num-1
gate_num=0;
for n=1:tnum_cdif(i)
%连续检索6个脉冲
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)%改过原来3,ii从2开始
gate_num=gate_num+1;
end
end
L=6;%原8
if gate_num>5
nn=n;
%向前向后搜索
for p=nn+6:-1:2%向前搜索
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)%改过原5
sig_total=sig_total+1;
data(sig_num,sig_total)=toa_cdif(i,ww);
end
end
end
三、运行结果
四、备注
版本:2014a
以上是关于雷达通信基于matlab CDIF算法雷达信号分选含Matlab源码 1186期的主要内容,如果未能解决你的问题,请参考以下文章
雷达通信基于matlab线性调频脉冲雷达仿真含Matlab源码 2104期
雷达通信基于matlab线性调频脉冲雷达仿真含Matlab源码 2104期
雷达通信基于matlab距离角度解耦法MIMO-OFDM雷达波束形成含Matlab源码 2208期
雷达通信基于matlab GUI雷达脉冲压缩含Matlab源码 303期