【雷达通信】信号分选SDIF序列差直方图算法原理及仿真程序【免费matlab源码,可自行修改参数】

目录

1.输入信号

2.算法原理

3.门限参数设置

4.仿真结果

5.仿真代码

6.写在后面


1.输入信号

        三种不同PRI固定重频雷达信号交叠的脉冲串。 观测时间:0.1s 接收信号数:1002。雷达信号一:固定重频信号,PRI1=197us;雷达信号二:固定重频信号,PRI2=332us;雷达信号三:固定重频信号,PRI3=515us

       输入信号见下图。其中左图为截取的前1000us的脉冲流信号示意图,右图为加了信号强度5%噪声的实际脉冲流信号。


2.算法原理

       序列差值直方图(SDIF)算法是对CDIF进行改进的一种分选算法。对比CDIF分选算法,SDIF减小了运算量。SDIF算法需要做子谐波检测,对谐波的抑制比CDIF算法好。 SDIF算法分选步骤如下: 
  (1)与CDIF算法相同。将脉冲流到达时间TOA递增排序,计算相邻脉冲时间间隔TOA(n)−TOA(n-1)。统计绘制一阶差值直方图。 
  (2)进行子谐波检验。在差值直方图中,如果只有一个PRI估计值的累计值大于检测阈值,则根据该PRI值进行脉冲序列检索。如果一阶差值直方图中多个值大于检测阈值时,不分选脉冲。当差值直方图阶数大于等于二阶,选择超过检测阈值的PRI估计值中最小的PRI估计值继续脉冲序列检索。 
 (3)将分选出的脉冲移除。剩余脉冲计算一阶SDIF。 
 (4)重复步骤,直到没有脉冲个数供分选或者直方图阶数达到固定为止。


3.门限参数设置

      SDIF直方图检测阈值门限的计算公式为:T(τ)=x(E-C)e^(-τ/kN) T是检测门限值x是可变参数,用来表示检测阈值门限的检测时速,一般大于0小于1k也是可变参数,用来调节门限,一般大于0小于1E是总的脉冲个数C是当前直方图的阶数,N为直方图小区间个数,τ为脉冲到达时间间隔常数仿真程序中采样时间T=0.1s, 脉冲个数E=1002 ,当前直方图阶数C为1、2(根据SDIF仿真阶数定),可调参数k=0.15, 可调参数x=0.5 ,直方图区间箱数N=10000。x、k为可调参数,一般由经验或试验确定。读者们均可根据需求自行修改参数。


4.仿真结果

        一阶SDIF结果如下,可以由图中发现PRI为197us的统计值最多,其余PRI的统计值很少,这是因为我们的输入信号是非常理想完整的,实际在脉冲丢失和脉冲抖动都存在的情况下,会有不同的仿真结果,具体可以参照博主的后续文章。实验选取的“箱长”为1us,统计中点为自然数1、2、3···大家可以自行修改”箱长“和统计中点,但若统计的”箱长“越大则越不准确,越小则数据不集中,很可能造成统计的信号没有超过门限出现漏警的情况。

      我们从图中发现统计的信号值没有超过门限,因此我们需要进行二阶SDIF直方图统计。需要注意的是,不同于CDIF算法,二阶SDIF不需要叠加一阶SDIF的累计值。

      二阶SDIF结果如下,我们发现有超越门限的PRI值,因此我们可以以此PRI值进行潜在序列搜索。若序列检索成功,则认为该PRI值为真实值并将其所对应的所有脉冲从脉冲序列中扣除,并重新进行统计。

    

     如下图,在剔除掉实际PRI为197us的脉冲序列后我们重新进行不同阶数的SDIF统计,我们发现在第一阶SDIF统计时就有PRI值为332us的信号超过了门限,我们再次对PRI值为332的信号序列进行序列搜索并剔除,再重新进行SDIF的统计。

       又如下图,在剔除掉实际PRI为332us的脉冲序列后我们重新进行不同阶数的SDIF统计,我们发现在第一阶SDIF统计时就有PRI值为515us的信号超过了门限,我们再次对PRI值为515的信号序列进行序列搜索并剔除,再重新进行SDIF的统计,最终发现没有序列超过门限,因此统计完成。

      在本次信号源的试验中SDIF总共只进行4次直方图计算就将所有脉冲信号依次分选出,而上篇文章中的CDIF算法则共计算了9次直方图统计。可见,CDIF的计算量较大,即使在简单的情况下仍需要计算多阶直方图,而SDIF相对于CDIF所需的计算量大大减少,实时性更强,但由于不进行不同阶的直方图累积,丢失了前面已经获得的信息。 


5.仿真代码

完整代码在个人主页的资源部分免费分享

资源名称:信号分选SDIF序列差直方图算法matlab仿真程序。

以下展示部分代码。

for t=1:2%SDIF直方图阶数
s_jiange=zeros(1,s_number-t);
for i=1:(s_number-t)
    s_jiange(1,i)=y_daodashijian(1,i+t)-y_daodashijian(1,i);
end
%正常令1us为一个箱,10000us应该有10000箱子,
s_xiang=zeros(1,10000)
for i=1:10000
    for j=1:(s_number-t)
%        if  (s_jiange(1,j)>=5*(i-1))&&( s_jiange(1,j)<(i*5))
           if  s_jiange(1,j)==i
            s_xiang(1,i)=s_xiang(1,i)+1;
           end
    end
end
s_jieguo=zeros(1,10000);
for i=1:10000
   s_jieguo(1,i)=s_xiang(1,i);
end
      figure(t);
      stem(s_jieguo,'r','Marker','none');
      hold on;
      x_kebiancanshu=0.4;
      k=0.15;
      C=t;
      xpri=(1e-10:0.1:1200);
      y=x_kebiancanshu*(s_number-C)*exp(-xpri/k/2000);%coeff1*time*10^6
      %N为直方图小区间个数(箱数)
      plot(xpri,y) %门限
      title(['第',num2str(t),'阶SDIF直方图'])
      xlabel('脉冲到达时间(TOA)间隔差值/us');ylabel('统计数量/个');
      axis([0 1200 0 500]);
 end

  

6.写在后面

       本文编写如有错误、疏漏等部分或读者有任何问题欢迎大家讨论。初学者推荐后续学习PRI变换、修正PRI变换法以及复现改进这些方法的一些文献。这些内容可以作为基础知识进行学习,也可以比较不同算法优劣整合成毕业设计或组会汇报内容。后续会有更多信号分选、通信原理、雷达和雷达对抗等方面的代码分享。

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

编程难孩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值