资源简介

雷达信号分选中常见的直方图法的SDIF算法。包含了信号产生、信号分选。

资源截图

代码片段和文件信息

clear all
clc
%开始分选子程序

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(1126))*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=[z1z2z3];

dd=1e-3;%dd=0; dd=1e-3; dd=1e-2                                          %设置抖动程度0和0.1%和1%
jitter=(1-2*rand(1254))*dd;
sig=sig+sig.*jitter;
sig=sort(sig);
%以上程序用于生成交错脉冲序列到达时间,交错脉冲序列由三部雷达组成

sort_para.pnum=1;
sort_para.tnum=254;
sort_para.toa=sig;
sdif_para.pri_fixr=5e-006;

sdif_para.step=3;
sdif_para.pri_id=1;
sdif_para.gate=0.1;
%[sort_bank]=sdif_picture(sort_parasdif_para)

time=37e-005;%采样时间最大重复周期10倍,
fs=250e006;%采样频率
toa_sdif=sort_para.toa;
tnum_sdif=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.45;%0.8;
coeff2=0.3;
series=3;%最多做c级差
L=6;


ppri_num=0;
ppri_fnum=0;
ppri=zeros(18);



%逐步提取脉宽对应TOA数据进行信号分选
for i=1:sort_para.pnum  %%信号脉宽个数
    %变量初始化
    pri_num=0;
    pri=0;
    pri_total=0;
    sig_total=0;
    pri_ratio=0;
    
    clear pri_save;
    pri_save.pri=0;                            %保存一级差脉冲重复周期
    pri_save.count=0;                          %保存各脉冲重复周期出现个数
    pri_save.pri_num=0;                        %保存一级差脉冲重复周期数
    pri_save.pri_total=0;
    
    %进行多级差计算
    for step_i=1:sdif_para.step  %% step:分选级数
        %如果TOA个数小于门限,跳出此层循环,准备提取下一个脉宽内的数据
        if sort_para.tnum(i)<5+step_i   %% tnum:信号到达时间个数
            break;
        else
            pri_num=0;
            pri=0;
            pri_total=0;
            sig_total=0;
            pri_ratio=0;
            pri_gate_num=0;
            
        
            child_id=0;
            child_num=0;
            child_fnum=0;
        
            %TOA个数大于门限,则准备分选先进行pri分类统计
            for j=1:sort_para.tnum(i)-step_i   %%%第step_i级一共有sort_para.tnum(i)-step_i个间隔
                %先求step_i级TOA差
                tem_pri=sort_para.toa(ij+step_i)-sort_para.toa(ij);
                                
                if pri_num>0 % pri数
                    for k=1:pri_num
                        %得到pri容限 
                        if sdif_para.pri_id==1    %%分选重复周期容限 固定
                            pri_range=sdif_para.pri_fixr;
                        else   %%分选重复周期容限 变化
                            pri_range=floor(pri(k)*sdif_para.pri_ranr/100);
                        end
                        %求pri下限
                        if pri(k)                            pri_low=0;
                        else
                            pri_low=pri(k)-pri_range;
                        end
                        %求pri上限
                        p

评论

共有 条评论