当前位置: 首页 > news >正文

【雷达原理】一维CFAR检测算法——对比分析与代码实现

目录

  • 引言
  • 一、仿真实例
    • 1.1 均匀背景杂波
    • 1.2 杂波边缘
    • 1.3 多干扰目标杂波
  • 二、MATLAB代码
  • 参考文献

引言

推荐博文【目标检测】雷达目标CFAR检测算法

上述文章介绍了四种典型CFAR检测算法的特点及性能对比。本文将利用MATLAB进行仿真,通过实例验证和对比这几种算法的优缺点。

一、仿真实例

为客观评价CFAR检测器的性能,Rohling从背景杂波区域均匀性出发,将杂波分为三种典型情况。
(1)均匀背景杂波:参考滑窗内背景杂波样本同分布;
(2)杂波边缘:参考滑窗内存在功率不同的背景杂波过渡区域情况;
(3)多干扰目标杂波:两个或者两个以上的目标,在同一参考滑窗内。

1.1 均匀背景杂波

仿真杂波数据是背景功率为15dB的独立同分布瑞利包络杂波序列,在第63个多普勒单元中存在一个功率为35dB的目标。设定虚警概率为 P f a = 1 0 − 6 P_{fa}=10^-6 Pfa=106,参考窗大小为8,保护窗大小为4。仿真结果如下图所示,红色虚线代表CA-CFAR的检测门限,由图可知,CA-CFAR在均匀背景杂波环境下可以正确检测出目标。
在这里插入图片描述

1.2 杂波边缘

1.3 多干扰目标杂波

在这里插入图片描述

二、MATLAB代码

%% 全局变量
global P_fa;
global referWin;
global guradWin;
global sensitive;
sensitive = 0.15;   % 灵敏度
P_fa = 1e-6;    % 虚警概率
referWin = 8;   % 参考窗大小
guradWin = 4;   % 保护窗大小%% 均匀背景杂波
sigma = 3;              % 方差
N = 256;                % 数据长度
Data = Get_RayleighData(sigma,N);   % 产生瑞利分布的随机数据Pos = (61:65);                  % 目标存在的位置
TarPow = [20,30,35,30,20];      % 目标信号功率
Data(Pos) = db2mag(TarPow);chioce = 1;
[~,Threshold] = ML_CFAR(Data,chioce);figure;
plot(20*log10(Data),'b-');
hold on;
plot(20*log10(Threshold),'r--');
xlabel('多普勒单元');ylabel('杂波功率/dB');
legend('杂波信号(含目标)','CA-CFAR检测门限');%% 杂波边缘/多干扰目标杂波
Len = 256;
sigma = 5;              % 方差
clutData = Get_RayleighData(sigma,Len);   % 产生瑞利分布的随机数据Pos1 = (61:65);                  % 目标1存在的位置
TarPow1 = [25,30,35,30,25];      % 目标1信号功率
clutData(Pos1) = db2mag(TarPow1);N1 = 100;                % 数据长度
clutData(1:N1) = clutData(1:N1)*db2mag(40);
clutData(N1+1:Len) = clutData(N1+1:Len)/db2mag(15);Pos2 = (96:102);                  % 目标2存在的位置
TarPow2 = [45,50,60,70,45,20,0];      % 目标2信号功率
clutData(Pos2) = db2mag(TarPow2);Pos3 = (158:162);                  % 目标3存在的位置
TarPow3 = [5,15,25,15,5];      % 目标3信号功率
clutData(Pos3) = db2mag(TarPow3);Pos4 = (163:167);                  % 目标4存在的位置
TarPow4 = [-5,5,15,5,-5];      % 目标4信号功率
clutData(Pos4) = db2mag(TarPow4);chioce = 1;
[~,CA_Th] = ML_CFAR(clutData,chioce);
chioce = 2;
[~,GO_Th] = ML_CFAR(clutData,chioce);
chioce = 3;
[~,SO_Th] = ML_CFAR(clutData,chioce);figure;
plot(20*log10(clutData),'k-');
hold on;
plot(20*log10(CA_Th),'r--');
plot(20*log10(GO_Th),'b--');
plot(20*log10(SO_Th),'m--');
xlabel('多普勒单元');ylabel('杂波功率/dB');
legend('杂波信号(含目标)','CA-CFAR检测门限','GO-CFAR检测门限','SO-CFAR检测门限');

参考文献

[1]陈伯孝, 等. 现代雷达系统分析与设计[M]. 西安:西安电子科技大学出版社, 2012.9.

相关文章:

  • 如何设置vue3项目中默认的背景为白色
  • 微信如何防止被对方拉黑删除?一招教你解决!文末附软件!
  • Ubuntu22.04配置脚本开机自启动
  • 云原生架构相关技术_2.云原生微服务
  • Three.js和Babylon.js,webGL中的对比效果分析!
  • Python驱动下的AI革命:技术赋能与案例解析
  • Nvidia Jetson/Orin +FPGA+AI大算力边缘计算盒子:人工智能消防应用
  • MS1112驱动开发
  • 查看Hive表的描述信息,包括在HDFS上的Location信息
  • mysql optimizer_switch : 查询优化器优化策略深入解析
  • mysql自带分页
  • 简单聊下服务器防病毒
  • python基础实例
  • 分布式数据库架构:从单实例到分布式,开发人员需及早掌握?
  • Prometheus+Altermanager实现钉钉告警
  • 002-读书笔记-JavaScript高级程序设计 在HTML中使用JavaScript
  • Angular 2 DI - IoC DI - 1
  • C++回声服务器_9-epoll边缘触发模式版本服务器
  • css属性的继承、初识值、计算值、当前值、应用值
  • java8 Stream Pipelines 浅析
  • JavaScript学习总结——原型
  • js 实现textarea输入字数提示
  • React as a UI Runtime(五、列表)
  • Vue组件定义
  • 翻译--Thinking in React
  • 如何编写一个可升级的智能合约
  • 软件开发学习的5大技巧,你知道吗?
  • 验证码识别技术——15分钟带你突破各种复杂不定长验证码
  • 智能合约Solidity教程-事件和日志(一)
  • 好程序员web前端教程分享CSS不同元素margin的计算 ...
  • ​学习一下,什么是预包装食品?​
  • $.type 怎么精确判断对象类型的 --(源码学习2)
  • (0)Nginx 功能特性
  • (aiohttp-asyncio-FFmpeg-Docker-SRS)实现异步摄像头转码服务器
  • (C#)一个最简单的链表类
  • (待修改)PyG安装步骤
  • (接口自动化)Python3操作MySQL数据库
  • (全部习题答案)研究生英语读写教程基础级教师用书PDF|| 研究生英语读写教程提高级教师用书PDF
  • (五)IO流之ByteArrayInput/OutputStream
  • (已解决)什么是vue导航守卫
  • (转载)OpenStack Hacker养成指南
  • (转载)虚函数剖析
  • .Net CF下精确的计时器
  • .NET Core WebAPI中使用Log4net 日志级别分类并记录到数据库
  • .net 无限分类
  • .NET/C# 使窗口永不获得焦点
  • .net项目IIS、VS 附加进程调试
  • .NET中winform传递参数至Url并获得返回值或文件
  • .net专家(张羿专栏)
  • @EnableWebMvc介绍和使用详细demo
  • @Pointcut 使用
  • [ CTF ]【天格】战队WriteUp- 2022年第三届“网鼎杯”网络安全大赛(青龙组)
  • [20170705]lsnrctl status LISTENER_SCAN1
  • [AIGC] Redis基础命令集详细介绍
  • [C puzzle book] types