雷达通信基于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期

雷达通信基于matlab NCP算法SAR回波生成和成像含Matlab源码 1185期

雷达通信基于matlab无人机FMCW毫米波高度计雷达仿真含Matlab源码 1261期