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

4 篇文章 1 订阅
4 篇文章 0 订阅

目录

1.输入信号

2.算法原理

3.门限参数设置

4.仿真结果

5.仿真代码

6.写在后面


1.输入信号

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

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


2.算法原理

   CDIF算法的基本原理是通过各级差值直方图的累积结果与检测门限相比较,来估计潜在的PRI值,然后通过序列检索来确认PRI值并提取单一雷达的脉冲序列。具体流程如下:

      (1)首先,计算任意两个相邻脉冲TOA的差值,对各差值出现次数进行统计形成第一级差值直方图。 
      (2)从最小的差值开始,将每一个差值和其对应的二倍差值处的统计结果与检测门限相比较,当发现两个统计值都超过检测门限时,就以该差值作为潜在PRI值进行序列检索。 
      (3)若序列检索成功,则认为该PRI值为真实值并将其所对应的所有脉冲从脉冲序列中扣除,重新进入步骤1;否则以步骤2的方式查找下一个差值作为潜在PRI进行序列检索,如果没有符合条件的差值,则进入步骤4。 
      (4)以增大两个脉冲之间间隔脉冲个数的方式,形成下一级差值直方图,并与之前各级差值直方图的结果进行累加,将累加值与检测门限相比较,重复2到4步骤,直至完成所有脉冲的分选工作。 

    在CDIF中,由于直方图累加的设定和序列检索算法的设计,使得CDIF算法在脉冲丢失率不高的情况下同样能够得到较好的结果,并且算法对干扰脉冲不敏感。为了排除谐波干扰的影响,CDIF算法要求两点同时超过门限时才进行序列检索,这一设定容易导致直方图级数增加,算法计算量过大。


3.门限参数设置

      CDIF算法的检测门限为: T=k*(T/τ)  ,其中k为可调系数,程序设置k=0.6 ,T为采样时间,程序设置T=0.1s ,τ:脉冲到达时间间隔(即图中的横坐标参数)。CDIF算法的门限参数主要由先验知识确定,读者们均可根据需求自行修改。


4.仿真结果

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

      我们从图中发现统计的信号值没有超过门限,因此我们需要进行二阶CDIF直方图统计。

      二阶和三阶CDIF结果如下,我们发现虽然有超越门限的PRI值,但是不满足此值和它的二倍值均超过门限的这一要求(具体见2.算法原理中的第二部分),因此我们还需进行四阶CDIF直方图统计。

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

     在剔除掉实际PRI为197us的脉冲序列后我们重新进行不同阶数的CDIF统计,我们发现在进行到第三阶CDIF直方图统计时有PRI为332us和664us。之后同理,用统计出的PRI值进行序列搜索并剔除,再进行下一次CDIF的统计直到没有信号值超过门限即可。


5.仿真代码

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

资源名称:信号分选CDIF累计差值直方图算法matlab仿真程序

以下展示部分代码。

for t=1:4%CDIF阶数
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箱子,脉冲统计中点为1、2、3···
s_xiang=zeros(1,10000)%进行脉冲累计
for i=1:10000
    for j=1:(s_number-t)
         if  s_jiange(1,j)==i
           s_xiang(1,i)=s_xiang(1,i)+1;
       end
    end
end

s_jieguo_guocheng=zeros(1,10000);%存放中间值,因为n阶CDIF需要
                                 %小于n的每一阶累计值和第n阶的值进行叠加
for i=1:10000
   s_jieguo_guocheng(1,i)=s_xiang(1,i);
end

s_jieguo=s_jieguo+s_jieguo_guocheng;
figure(t);
%绘图
stem(s_jieguo,'r','Marker','none');
hold on;
x_kebiancanshu=0.6;
xpri=(1e-10:0.1:1200);
y=x_kebiancanshu*1e-1./(xpri*1e-6);%coeff1*time*10^6%门限绘制
plot(xpri,y) %门限
title([num2str(t),'阶CDIF直方图'])
xlabel('PRI估计值/us');
ylabel('统计值/V');
axis([0 1200 0 600]);
end
 

6.写在后面

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

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

编程难孩

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

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

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

打赏作者

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

抵扣说明:

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

余额充值