毫米波雷达系列 | 传统CFAR检测(均值类)

news2024/11/16 23:49:56

毫米波雷达系列 | 传统CFAR检测(均值类)

文章目录

  • 毫米波雷达系列 | 传统CFAR检测(均值类)
    • 1.CA-CFAR算法
    • 2.SO-CFRA算法
    • 3.GO-CFAR算法
    • 4.仿真对比

CFAR检测器主要用于检测背景杂波环境中的雷达目标,常见的均值类CFAR检测器包括单元平均检测器(CA-CFAR)、选择最大检测器(GO-CFAR)、选择最小检测器(SO-CFAR)。

CFAR检测器的性能取决于窗口的大小和形状,以及阈值的设置。通常,选择合适的窗口和阈值需要进行大量的实验和测试,以便在各种条件下获得最佳性能。

CFAR检测器将窗口分为三类:参考单元、保护单元和检测单元。

其中参考单元用来估算背景杂波功率值,保护单元用来防止检测单元的能量泄漏到参考单元。

1.CA-CFAR算法

CA-CFAR 是指,在待检测单元两侧各取 N 个参考单元,计算总共2N 个参考单元的平均值,当作背景杂波功率估计值 Zca。所以待检测单元 D 两侧参考单元计算表达式为:

Z c a = ( X + Y ) / 2 = 1 2 N ( ∑ i = 1 N x i + ∑ i = 1 N y i ) Zca = (X+Y)/2=\frac{1}{2N}(\sum_{i=1}^{N}{x_i}+\sum_{i=1}^{N}{y_i}) Zca=(X+Y)/2=2N1i=1Nxi+i=1Nyi
将背景杂波功率估计值 Zca乘以门限乘积因子k,就得到待检测单元D的门限值S。
S = k Z c a = k 2 N ( ∑ i = 1 N x i + ∑ i = 1 N y i ) S=kZca=\frac{k}{2N}(\sum_{i=1}^{N}{x_i}+\sum_{i=1}^{N}{y_i}) S=kZca=2Nki=1Nxi+i=1Nyi

2.SO-CFRA算法

SO-CFAR 是指,对参考单元分别计算其平均值 X 和Y,并选取X 和Y中平均值较小的当作待检测单元D的背景杂波功率估计值 Zso。
Z s o = m i n ( X , Y ) Zso=min(X,Y) Zso=min(X,Y)

X = ∑ i = 1 N x i X=\sum_{i=1}^{N}{x_i} X=i=1Nxi

Y = ∑ i = 1 N y i Y=\sum_{i=1}^{N}{y_i} Y=i=1Nyi

检测门限S可以表示为:
S = k Z s o S=kZso S=kZso

3.GO-CFAR算法

GO-CFAR 是指,对参考单元分别计算其平均值 X 和Y,并选取 X 和Y中平均值较大的当作待检测单元 D 的背景杂波功率估计值 ZGO
Z g o = m a x ( X , Y ) Zgo=max(X,Y) Zgo=max(X,Y)
检测门限S可以表示为:
S = k Z g o S=kZgo S=kZgo

4.仿真对比

在均匀杂波环境、多目标环境和杂波边缘环境中对均值类CFAR检测器的性能进行比较分析。

参数设置:

虚警概率10-4
参考单元32
保护单元4
信噪比SNR20
多目标单元位置110和120
杂波边缘功率20dB、30dB

1)均匀背景

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iCOpqqyN-1683428305173)(D:\学习\毫米波雷达实验代码整理版本\CFAR算法仿真代码\CM-VI-OS-ML算法在多目标检测中性能对比\CA-GO-SO均匀杂波环境下单目标检测.png)]

2)多目标

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ehnjEsxm-1683428305174)(D:\学习\毫米波雷达实验代码整理版本\CFAR算法仿真代码\CM-VI-OS-ML算法在多目标检测中性能对比\CA-GO-SO均匀环境下双目标的遮蔽效应.png)]

3)杂波边缘环境

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uBu8F6Pn-1683428305174)(D:\学习\毫米波雷达实验代码整理版本\CFAR算法仿真代码\CM-VI-OS-ML算法在多目标检测中性能对比\CA-GO-SO边缘杂波环境下漏检问题.png)]

三种均值类检测器在均匀环境中都可以在第110个距离单元检测出目标,三种检测器的性能基本无差异;

在多目标环境中,可以看到只有SO-CFAR成功将两个目标检测到,而CA-CFAR和GO-CFAR对第110个距离单元的目标漏检。第120个距离单元的目标为信噪比较强的信号,在运算的过程中加入到了参考单元中,使得整个背景杂波功率估计值变高,因此检测门限提高,从而导致了漏检。SO-CFAR检测器采取的策略是选择小的背景功率估计值,所以可以将两个目标都检测到;

在杂波边缘环境中,在第100个距离单位处的目标只有GO-CFAR算法检测成功,CA-CFAR和SO-CFAR均出现了漏检现象,说明GO-CFAR在杂波边缘环境下的虚警能力控制更强

clc;
close all;
clear all;
%% 均匀背景噪声(单目标&多目标)
clear
close all;
shape=200;
variance=200;
noise_db=20;
noise_p=10.^(noise_db./10);%噪声的实际功率
show_out=0;
[ xc ] = env_uniform(variance,  shape, noise_db,show_out);% 产生信号

% 多目标
locatsite=[80,110,120];
% SNR1=12;signal1_p=10.^(SNR1./10).*noise_p(1,end);
SNR2=15;signal2_p=10.^(SNR2./10).*noise_p(1,end);
SNR3=18;signal3_p=10.^(SNR3./10).*noise_p(1,end);
% xc(1,locatsite(1))=signal1_p;
xc(1,locatsite(2))=signal2_p;
xc(1,locatsite())=signal3_p;
trgt = zeros(length(locatsite),2);
% trgt(1,:) = [locatsite(1),signal1_p];
trgt(2,:) = [locatsite(2),signal2_p];
trgt(3,:) = [locatsite(3),signal3_p];
%% 算法结果&图谱显示
N=32;
pro_N=4;
PAD=10^(-4); % 虚警概率

% xc为信号;pro_N为保护单元;PAD为虚警概率
% XT为CFAR的检测门限
[ XT_CA ] = cfar_ac( abs(xc), N, pro_N, PAD);%计算CACFAR
[ XT_GO ] = cfar_go( abs(xc), N, pro_N, PAD);%计算CACFAR
[ XT_SO ] = cfar_so( abs(xc), N, pro_N, PAD);%计算CACFAR

plotNum=20;
markersize=5;
LineWidth=1.25;
len=length(xc);
figure;
plot(10.*log(abs(xc))./log(10),'LineWidth',LineWidth),hold on;
plot(10.*log(abs(XT_CA))./log(10),'g-+','MarkerIndices',1:plotNum:len),hold on;
plot(10.*log(abs(XT_GO))./log(10),'r-*','MarkerIndices',30:plotNum:len),hold on;
plot(10.*log(abs(XT_SO))./log(10),'b-^','MarkerIndices',60:plotNum:len),hold on;
trgtFlag = exist('trgt','var') ;
if trgtFlag%有无目标点
    plot(trgt(:,1),10.*log(abs(trgt(:,2)))./log(10),'s','Color',[1 0 1],'MarkerSize',markersize),hold on;
end
title('CA-GO-SO-CFAR处理效果图');
xlabel('频谱单元');ylabel('幅度/dB');
legend('信号','CA-CFAR','GO-CFAR','SO-CFAR','目标点','Location','SouthEast');

% 均匀背景
function [ xc ] = env_uniform(variance,  shape, power_db, show_out)
if (nargin==3)
    show_out=0;
end
c=10^(power_db/10);     % 这里是幅度——功率,实际的噪声功率
xc=c + random('Normal',0,variance,1,shape);%产生一个正态分布/高斯分布的噪声,期望为0,标准差为200,1*200的矩阵
if show_out==1
    figure;plot(10.*log(abs(xc))./log(10));
end
end

% 杂波背景
function [ xc ] = env_edge(variance,  shape, power_db, show_out)
if (nargin==3)
    show_out=0;
end
c=10.^(power_db./10);               % 这里是幅度——功率
xc=random('Normal',0,variance,1,shape(1,end)); % 正常分布 期望为0 方差为200 1*2矩阵
xc(1,1:end)=xc(1,1:end)+c(1,1);% 前面20
index=1;
for i=1:length(power_db)
    xc(1,index:shape(1,i))=xc(1,index:shape(1,i)).*c(1,i)./c(1,1);
    index=shape(1,i)+1;
end
if show_out==1
    figure;plot(20.*log(abs(xc))./log(10));
end
end

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/497807.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据结构之队列的详解

文章目录 一.什么是队列二.队列的使用2.1 队列的基本操作2.2 队列的基本使用 三.队列的模拟实现3.1 数组实现队列3.2 链表实现队列 四.队列的应用4.1 设计循环队列4.2 设计双端队列4.3 队列实现栈4.4 栈实现队列 五.总结 一.什么是队列 队列是一种先入先出(FIFO)的线性表数据结…

点评项目导入

文章目录 开篇导读项目地址导入SQL项目架构介绍后端项目导入前端项目导入 开篇导读 实战篇我们要学习以下内容 短信登录 这一块我们会使用redis共享session来实现 商户查询缓存 通过本章节,我们会理解缓存击穿,缓存穿透,缓存雪崩等问题&…

力扣刷题Day12

239. 滑动窗口最大值 (此题逻辑真心牛皮) 做此题之前,首先明确此题的目的。我最开始没搞明白此题目的,看代码的时候卡死。 copy他人代码: from collections import dequeclass MyQueue: #单调队列(从大到小def __ini…

6.S081——陷阱部分(一文读懂Xv6系统调用)——xv6源码完全解析系列(5)

0.briefly speaking 这篇博客将要开始尝试阅读和研究与Xv6陷阱机制相关的代码,主要有以下文件,最重要的是结合Xv6 book将Xv6处理陷阱的相关逻辑和流程弄透。在Xv6的语境中所谓陷阱的触发有以下三种情况: 系统调用严重错误(比如除…

windows守护进程工具--nssm使用

一、nssm简介 nssm是一个服务封装程序,它可以将普通exe程序封装成服务,实现开机自启动,同类型的工具还有微软自己的srvany,不过nssm更加简单易用,并且功能强大。 它的特点如下: 支持普通exe程序(控制台程序…

每天看一个fortran文件(7)之寻找cesm边界层高度计算代码

自从我把我的代码移到了单独的F90 中,从tphysac.F90中调用后。我发现有很多的变量我没办法调用了,特别是边界层中原先已经算好的变量,比如说我想调用原来模式中的pblh,但是那是在vertical diffusion.F90中计算的,在tphysac中根本调…

基于springcloud实现的医院信息系统

访问【WRITE-BUG数字空间】_[内附完整源码和文档] 医疗信息就诊系统,系统主要功能按照数据流量、流向及处理过程分为临床诊疗、药品管理、财务管理、患者管理。诊疗活动由各工作站配合完成,并将临床信息进行整理、处理、汇总、统计、分析等。本系统包括以…

以前以为去流量大的部门是好事,能学技术,现在才知道,流量大的部门狗都不去!晚上9点才下班,一天到晚都是监控告警!...

流量大的部门好,还是流量小的部门好? 一位网友说,工作以前以为去流量大的部门是好事,能学技术;工作后才知道,流量大的部门和组,狗都不去!待在流量大的组,晚上9点起步才下…

p71 内网安全-域横向网络传输应用层隧道技术

数据来源 必备知识点: 1、代理和隧道技术区别? 代理:只是解决网络的访问问题(如:有些内网访问不到,可以用代理实现) 隧道:隧道不仅是解决网络的通信问题,更大的作用是绕过过滤&…

菜刀、蚁剑以及冰蝎三款Webshell管理工具简介

今天继续给大家介绍渗透测试相关知识,本文主要内容是菜刀、蚁剑以及冰蝎三款Webshell管理工具简介。 免责声明: 本文所介绍的内容仅做学习交流使用,严禁利用文中技术进行非法行为,否则造成一切严重后果自负! 再次强调&…

YOLO(你只需看一眼)技术通讲(基于论文与开源代码)

YOLO通讲 前言YOLO v1论文及项目地址介绍模型架构统一检测边界框的置信度类置信度 网络设计训练 模型局限总结 YOLO v2模型改进正则化批处理使用高分辨率分类器卷积化锚盒维度聚类 前言 YOLO作为现在目标检测技术中较为基础且流行的技术之一。本文将以开源者的论文与模型为基础…

UE5实现物体高亮描边效果(含UE相关源码浅析)

文章目录 1.实现目标2.实现过程2.1 UE Editor中相关源码2.2 深度值描边2.3 半透明材质处理2.4 遮挡处理2.5 视口边缘处理3.参考资料1.实现目标 在UE5中实现物体边缘高亮效果,且在被遮挡时在边缘显示不同的颜色,当到达视口边缘时,也会将该物体与视口边缘相交的部分高亮。 2.…

纯比例控制为什么会存在稳态误差,用纯增益系统举例

warning: 本文仅为个人思考,非常不严谨甚至可能会出现严重错误,请读者仔细甄别,若本文真的存在严重错误,恳请评论区纠正,我看到将会考虑修改或者删除文章 纯比例控制存在稳态误差是由其本质(控制逻辑&#…

从FPGA说起的深度学习(九)- 优化最终章

这是新的系列教程,在本教程中,我们将介绍使用 FPGA 实现深度学习的技术,深度学习是近年来人工智能领域的热门话题。 在本教程中,旨在加深对深度学习和 FPGA 的理解。 用 C/C 编写深度学习推理代码高级综合 (HLS) 将 C/C 代码转换为…

【在线OJ项目】核心技术之用户提交代码的编译运行

目录 一、认识Java进程编程 二、在线OJ核心思路 三、封装进程的执行 四、封装文件读写 五、封装用户提交代码的编译运行 一、认识Java进程编程 在之前的文章里提到了Java进程编程的相关API【JavaEE】Java中进程编程_1373i的博客-CSDN博客https://blog.csdn.net/qq_6190341…

【代码随想录】刷题Day17

1.AVLTree判断 110. 平衡二叉树 后序遍历的强化理解: 所谓后续遍历,不仅仅是一种遍历,其实它是完成了所有左右子树的递归。后续遍历能将自己所求的值返回给上层节点。这在比较中很关键,举个例子,我们能得到下边节点返…

Makefile教程(Makefile的结构)

文章目录 前言一、Makefile的结构二、深入案例三、Makefile中的一些技巧总结 前言 一、Makefile的结构 Makefile 通常由一系列规则组成,每条规则定义了如何从源文件生成目标文件。每个规则又由目标、依赖和命令三部分组成。 下面是 Makefile 规则的基本结构&…

Matlab官方的两个配色colormap补充包

目录 一、othercolor 1、使用方法 2、图示 二、slanCM 1、使用方法 2、图示 三、从matlab上下的函数如何使用 一、othercolor 下载地址:matlab_othercolor.zip 1、使用方法 不指定获取颜色个数会默认256色,举例获取[163]号彩虹色(rainbow)&…

Java阶段二Day15

Java阶段二Day15 文章目录 Java阶段二Day15复习前日知识点对象数据类型注入数组类型注入集合类型的注入p命名空间引入外部属性文件 基于XML管理beanbean的作用域bean的生命周期代码演示生命周期后置处理器处理展示基于XML的自动装配 基于注解管理bean开启组件扫描使用注解定义B…

【A200】 TX1核心 JetPack4.6.2版本如何修改DTB文件测试全部SPI

大家好,我是虎哥,很长时间没有发布新内容,主要是这段时间集中精力,研究DTB设备树的修改,以适配不同载板,同时也是专门做了一个TX1&TX2核心,双网口,可以使用SPI 扩展CAN接口的载板…