引言:恒虚警检测算法在雷达目标识别中应用的比较多,最简单的有CA-CFAR啥啥的。其实该算法的应用很简单,只需要根据想要的虚警概率去计算,再利用周围参考单元的值去估计待测单元的噪声功率,进而就能得到门限(其中为噪声功率)。

应用简单但是原理确实有些不好理解,故在此解释原理思路。

CFAR原理思路解释

CFAR其实可以归结为《信号检测与估计》中的内容,意为恒虚警检测,基于奈曼-皮尔逊准则。在雷达目标检测当中应用广泛。但是在使用其的时候,总是会思考为什么?为什么门限?为什么可以限定(虚警概率)?为什么可以由周围的参考单元去求得?为什么不直接求自身的单元进而求?

文献[1]中指出: 精确已知干扰功率是准确设定检测门限的前提条件,但是对一般雷达系统而言,干扰功率未知。为使雷达系统具有恒定的虚警概率,可以实时地从数据中估计实际干扰噪声功率电平,从而相应地调整雷达检测门限。恒虚警处理过程中所使用的方法基于两个主要假设:
1、待检测单元的杂波统计特性与临近单元所含杂波特性一致,临近单元所含杂波对于与潜在目标进行竞争的杂波具有代表性。
2、临近单元仅存在干扰噪声,不包含任何目标。
在上述主要假设下,可以从临近单元的数据中估计得到待检测单元的干扰杂波统计特性。待估计的干扰杂波统计特性由完成恒虚警概率门限检测所需要的量决定。

从上述讲述可以看出CFAR的思路:CFAR研究的是:待测单元未知、参考位置没有目标的情况。因为待测单元未知,故需要用周围参考单元的功率(没有目标,因此是噪声功率)去估计待测单元的噪声功率。而为了精准的设计出自适应门限,恰恰需要的就是噪声功率,只要得到了噪声功率之后,乘以(一般>>1)得到门限,之后将待测单元的值和这个门限比较若大于门限,也就意味着有目标。

至于为什么要乘,和的取值与什么有关?关于为什么要乘这是因为噪声功率的分布是忽高忽低的,可能这一单元的功率高,下一单元你的功率就低。而前面估计出的是平均噪声功率,这样出现虚警的概率就会达到惊人的50%,很显然不是我们想要的。因此我们需要去乘以一个远远大于1的数去将这个概率降低,这里是有一个的公式的,代码中有可以看一下,在这里不在写了。如下图所示乘以之后使得虚警概率也会大大降低(红线左边的区域)。

在这篇文章就不再填写公式只是探讨一下思路。以上大思路讲解完了,提一下具体的不同算法的操作。

1、CA-CFAR是利用周围参考单元的平均值去估计的待测单元的噪声功率。

2、还有其他的什么最小、最大是将周围参看单元排序之后取最大或最小的值去估计。

关于这几种算法有什么优缺点在此不多叙述,前者可以更稳定但是会有遮蔽效应,后者解决了遮蔽效应但...

一维CA-CFARmatlab演示及其代码[2]:

下面对一维CA-CFAR进行仿真:

结果不错。很有效的降低了噪声干扰。

代码:

%% 初始化
close all;
clc;
tarR = [10 20];    %目标距离
tarV = [-3 10];     %目标速度
c = 3*10^8;
f0 = 24.25*10^9;
T = 0.0002;   %chirp Sweep Time
B = 400*10^6; %chirp bandwidth
L = 128;            %slow-time dimension,num of chirps
N = 128;           %fast-time dimension,num of samples
Npad = 1;
Lpad = 1;
%% 生成回波信号
S1 = zeros(L,N);
for l = 1:Lfor n = 1:NS1(l,n) = 500*exp(1i*2*pi*((2*B*(tarR(1)+tarV(1)*T*l)/(c*T)+(2*f0*tarV(1))/c)*T/N*n+((2*f0)*(tarR(1)+     tarV(1)*T*l     ))/c));end
end
S1 = awgn(S1,20);
S2 = zeros(L,N);
for l = 1:Lfor n = 1:NS2(l,n) = 500*exp(1i*2*pi*((2*B*(tarR(2)+tarV(2)*T*l)/(c*T)+(2*f0*tarV(2))/c)*T/N*n+((2*f0)*(tarR(2)+tarV(2)*T*l))/c));end
end
S2 = awgn(S2,20);
sigReceive = S1+S2;
%% 距离维FFT
hanning1 = hanning(N,'periodic');
sigRWin = zeros(L,N);
for ii = 1:LsigRWin(ii,:) = hanning1'.*sigReceive(ii,:);
end
sigRfft = zeros(L,N*Npad);
for ii = 1:LsigRfft(ii,:) = fft(sigRWin(ii,:),N*Npad);%第一行做fft
end
%% LFMCW雷达的信号序列。由于再次仅仅那只是模拟一维CA-CFAR故只分析其中一行
Rres = c/(2*B*Npad);
sigRfft1=sigRfft(1,:);
plot(Rres*(1:N*Npad),10*log(abs(sigRfft1))),title('Range Mesure')
xlabel('Range/m'),ylabel('Db');
hold on
%% 一维CA-CFAR
Pfa = 10^(-6);
Rres_rdm = c/(2*B);
Range_Dim = Rres_rdm*(1:N);
Range_Map = abs(sigRfft1);
referCell_num = 9;
proCell_num = 5;
proCell = zeros(proCell_num,1);
[r,c] = size(Range_Map);
CFAR_Map_num = 128 - (referCell_num-1);
CFAR_Map = zeros(CFAR_Map_num,1);
referCell = referCell_num;
alpha = referCell*(Pfa^(-1/referCell) - 1);
for i = 1:CFAR_Map_numreferWindow = Range_Map(i:i+referCell_num-1);proCell = referWindow(1+(referCell_num - proCell_num)/2:referCell_num - (referCell_num - proCell_num)/2);Beta = (sum(referWindow) - sum(proCell))/(referCell);CFAR_Map(i) = alpha*Beta;
end
cha=referCell_num-proCell_num;
plot(Rres*(1+cha:N*Npad-cha),10*log(CFAR_Map));

参考文献:

[1]严鑫. 毫米波雷达多目标检测与参数估计算法研究[D].东南大学,2017.

[2]FMCW雷达距离多普勒(RDM)处理方法中距离分辨率和速度分辨率的推导_GtJason_1998的博客-CSDN博客_多普勒分辨率https://blog.csdn.net/qq_41248471/article/details/104276739

CFAR原理详解及其matlab代码实现相关推荐

  1. 蚁群算法原理详解和matlab代码

    1原理: 蚂蚁在寻找食物源的时候,能在其走过的路径上释放一种叫信息素的激素,使一定范围内的其他蚂蚁能够察觉到.当一些路径上通过的蚂蚁越来越多时,信息素也就越来越多,蚂蚁们选择这条路径的概率也就越高,结 ...

  2. Vondrak滤波原理详解及Matlab实现

    Vondrak滤波原理详解及Matlab实现 一.Vondrak基本思想: 二.Vondrak平滑法的原理: 三.Vondrak滤波平滑公式: 四.Vondrak滤波应用 五.Matlab实现 一.V ...

  3. DS18B20温度传感器原理详解及例程代码、漏极开路

    [常用传感器]DS18B20温度传感器原理详解及例程代码_Z小旋的博客-CSDN博客_ds18b20温度传感器 传感器引脚及原理图 DS18B20传感器的引脚及封装图如下: DS18B20一共有三个引 ...

  4. 计算机组织与结构poc,CPU漏洞原理详解以及POC代码分享

    原标题:CPU漏洞原理详解以及POC代码分享 首先,这个漏洞已经公布近一周时间了,看到各大媒体.公众号到处在宣传,本打算不再发布类似信息,但是发现很多媒体的报道达到了一个目的--几乎所有的CPU都有漏 ...

  5. 视频教程-深度学习原理详解及Python代码实现-深度学习

    深度学习原理详解及Python代码实现 大学教授,美国归国博士.博士生导师:人工智能公司专家顾问:长期从事人工智能.物联网.大数据研究:已发表学术论文100多篇,授权发明专利10多项 白勇 ¥88.0 ...

  6. ADMM,ISTA,FISTA算法步骤详解,MATLAB代码,求解LASSO优化问题

    ADMM,ISTA,FISTA算法步骤详解,MATLAB代码,求解LASSO优化问题 原创文章!转载需注明来源:©️ Sylvan Ding's Blog ❤️ 实验目的 了解 ADMM, ISTA, ...

  7. 【RS码2】RS码的BM迭代译码原理详解及MATLAB实现(不使用MATLAB库函数-代码见CSDN同名资源)

    关注公号[逆向通信猿]更精彩!!! 理论基础 订阅<信道编码>专栏,首先查阅各子程序的详解 [有限域生成]本原多项式生成有限域的原理及MATLAB实现 [有限域除法]二元多项式除法电路原理 ...

  8. 【BCH码2】BCH码的快速BM迭代译码原理详解及MATLAB实现(不使用MATLAB库函数-代码见CSDN同名资源)

    关注公号[逆向通信猿]更精彩!!! 理论基础 订阅<信道编码>专栏,首先查阅各子程序的详解 [有限域生成]本原多项式生成有限域的原理及MATLAB实现 [有限域除法]二元多项式除法电路原理 ...

  9. 【BCH码3】BCH码的彼得森译码原理详解及MATLAB实现(不使用MATLAB库函数『需要完整代码请先私信』)

    结果预览 理论基础 订阅<信道编码>专栏,首先查阅各子程序的详解 [有限域生成]本原多项式生成有限域的原理及MATLAB实现 [有限域除法]二元多项式除法电路原理及MATLAB详解 [有限 ...

  10. 随机森林原理详解及python代码实现

    随机森林(RF)算法 1.算法原理 2.对数据的要求(无需规范化) 3.算法的优缺点 4.算法需要注意的点 5.python代码实现(待更......) 导入相关包 读取数据并预处理(必须处理缺失值) ...

最新文章

  1. 所有类是object的子类,但是又可以继承一个其他类解析
  2. 哈佛大学校长: 教育是培养你辨别有人在胡说八道的能力
  3. 微软招聘研究实习生,base美国or加拿大
  4. Linux多台服务器共用密钥ssh自动登陆
  5. Linux内核系统时钟管理 感想总结 (未完待续)
  6. 系统运维|IIS的日志设置
  7. 接入Tinker热修复和踩坑
  8. JS特效 -- 网页图片飞起来
  9. |NOIOJ|动态规划|3532:最大上升子序列和
  10. sqlserver compact sdf, sqlite 数据库 在net中相对路径设置方法 - 摘自网络
  11. WordPress Kyma插件里Connect和disconnect按钮的动态显示逻辑
  12. 转:使用Android API最佳实践
  13. php呼叫平台,php – Twilio呼叫转发
  14. zblog include html页面,zblog模板开发第一课:zblog标签调用大全
  15. ES使用Ngram分词器实现wildcard高性能替代方案
  16. 我们应该拥有怎样的职场价值观
  17. 解决mysql重启自动同步的问题
  18. 消除小黑点html,word黑点怎么去掉,Word文档项目编号前有个小黑点
  19. PHP头条爬虫,今日头条爬虫分析-爬取用户发的所有内容
  20. 华为笔记本在linux下越狱苹果设备(2022.2.27更新)

热门文章

  1. 速达 从xp系统换成win7
  2. 使用Apache FtpServer搭建FTP服务器 [FlashFXP]
  3. Python全栈工程实践
  4. 高性能RPC框架BRPC核心机制分析
  5. [置顶] 【原创】无线LED条屏信息报警项目---2012.05
  6. Echart词云图自定义形状,少词显示不全,配置项相关设置
  7. (个人笔记)EDEM耦合Recurdyn流程
  8. Java期末考试题(个人押题版)
  9. SCTP协议与程序设计案例
  10. 跨平台数据库ODB实战3-Person类的存储、查询、更新和删除