雷达无线电系列(三)经典CFAR算法门限因子alpha计算(matlab)
前言 本文汇集CA、SO、GO、OS、杂波图等恒虚警算法的门限因子求解方法及其函数
1,CA-CFAR 【非常简单,可以直接求解】
%% 均值恒虚警_门限因子计算公式
%% 版本:v1
%% 时间:2019.11.08
%% 终版【不在优化】 function [ alpha ] = form_ALPHA_ca( PFA,N )
%FORM_ALPHA_CA 此处显示有关此函数的摘要
% PFA:虚警概率
% N:参考单元个数 alpha=N.*(PFA.^(-1./N)-1); end
2,SO-CFAR 【这个门限因子求解是一个非常复杂的高阶函数,基本上无法通过反函数求解,这里使用二分求解法解决】
PFA计算函数
%% 虚警概率_均值选小
%% 时间:2019.11.27
%% 版本:v1【不在优化】 function [ PFA ] = form_PFA_so( ALPHA,N )
%FORM_PFA_GO 此处显示有关此函数的摘要
% ALPHA:门限因子
% N:参考窗个数 PFA=0;
n=N/2;
for i=0:n-1
PFA=PFA+2.*gamma(n+i)./gamma(i+1)./gamma(n).*(2+ALPHA./n).^(-(n+i));
end end
2,GO-CFAR
PFA计算函数
%% 虚警概率_均值选大
%% 时间:2019.11.27
%% 版本:v1【不在优化】 function [ PFA ] = form_PFA_go( ALPHA,N )
%FORM_PFA_GO 此处显示有关此函数的摘要
% ALPHA:门限因子
% N:参考窗个数 PFA=0;
n=N/2;
for i=0:n-1
PFA=PFA-2.*gamma(n+i)./gamma(i+1)./gamma(n).*(2+ALPHA./n).^(-(n+i));
end
PFA=PFA+2.*(1+ALPHA./n).^(-n); end
3,OS-CFAR
%% 虚警概率_有序
%% 时间:2019.11.27
%% 版本:v1【不在优化】 function [ PFA ] = form_PFA_os( ALPHA,N,Rate )
%FORM_PFA_GO 此处显示有关此函数的摘要
% ALPHA:门限因子
% N:参考窗个数
% Rate:比例点 k=ceil(N.*Rate);
PFA=gamma(N+1).*gamma(N-k+ALPHA+1)./gamma(N-k+1)./gamma(N+ALPHA+1); end
4,杂波图
点参数
%% 虚警概率_杂波图_点参数
%% 时间:2019.11.27
%% 版本:v1【不在优化】 function [ PFA ] = form_PFA_cm_point( ALPHA,m,r )
%FORM_PFA_CM 此处显示有关此函数的摘要
% ALPHA:门限因子
% m:天线旋转周期 PFA=1;
for n=0:m-1
PFA=PFA.*(1+ALPHA.*r.*(1-r).^n).^-1;
end end
面参数
%% 虚警概率_杂波图_面参数
%% 时间:2019.11.27
%% 版本:v1【不在优化】 function [ PFA ] = form_PFA_cm_surface( ALPHA,m,r,M )
%FORM_PFA_CM 此处显示有关此函数的摘要
% ALPHA:门限因子
% m:天线旋转周期
% M:参考单元数 PFA=1;
for n=0:m-1
PFA=PFA.*(1+ALPHA.*r.*(1-r).^n./M).^-1;
end
end
5,二分求解法核心函数
%% 二分法求解方程的解
%% 时间:2019.11.27
%% 版本:v1【不在优化】 function [ d1 ] = func_SOLUTION_binary( d1_scope,d2_precision,func,parameter)
%FUNC_SOLUTION_BINARY 此处显示有关此函数的摘要
% d1: 已知数值
% d2: 目标数值
% d2_scope: 目标初始范围【小值,大值】
% d1_precision: 目标数值精度【精度值】
% func: 公式
% parameter: 相关参数【类型自定】 1=ALPHA, end=d2 shape=size(parameter);
if shape(2)==2 %只有一个参数额外参数需要输入
while 1
d1=mean(d1_scope);
d2=func(d1,parameter(1,1)); % 本质上是PFA_pre
d2_difference=1/d2-1/parameter(1,end);
if abs(d2_difference)<d2_precision || abs(d1_scope(1,1)-d1_scope(1,2))<0.001
return;
elseif d2_difference<0
d1_scope(1,1)=d1;
else
d1_scope(1,2)=d1;
end
end
elseif shape(2)==3 % 用于OS_CFAR门限因子的计算
while 1
d1=mean(d1_scope);
d2=func(d1,parameter(1,1),parameter(1,2)); % 本质上是PFA_pre
d2_difference=1/d2-1/parameter(1,end);
if abs(d2_difference)<d2_precision || abs(d1_scope(1,1)-d1_scope(1,2))<0.001
return;
elseif d2_difference<0
d1_scope(1,1)=d1;
else
d1_scope(1,2)=d1;
end
end
end
end
6,测试样例及其输出结果
clear; PFA=10^(-4);
N=36;
Rate=0.5; [ ALPHA ] = form_ALPHA_ca( PFA,N );
[ PFA1 ] = form_PFA_ca( ALPHA,N ); d1_scope=[0,100];
d2_precision=1;
func1=@form_PFA_ca;
func2=@form_PFA_so;
func3=@form_PFA_go;
func4=@form_PFA_os; func5=@form_PFA_cm_point; parameter=[N,PFA];
parameter4=[N,Rate,PFA];
parameter5=[100,1./512,PFA]; [ ALPHA1 ] = func_SOLUTION_binary( d1_scope,d2_precision,func1,parameter);
[ ALPHA2 ] = func_SOLUTION_binary( d1_scope,d2_precision,func2,parameter);
[ ALPHA3 ] = func_SOLUTION_binary( d1_scope,d2_precision,func3,parameter);
ALPHA3_1=form_ALPHA_os (N,Rate,PFA);
[ ALPHA4 ] = func_SOLUTION_binary( d1_scope,d2_precision,func4,parameter4); [ ALPHA5 ] = func_SOLUTION_binary( d1_scope,d2_precision,func5,parameter5);
输出结果展示:

链接:https://pan.baidu.com/s/1mQjpBfzgAFYtsQLPPEAe7Q 提取码:48p6
雷达无线电系列(三)经典CFAR算法门限因子alpha计算(matlab)的更多相关文章
- 雷达无线电系列(二)经典CFAR算法图文解析与实现(matlab)
一,CFAR基础知识介绍 简介 恒虚警检测技术是指雷达系统在保持虚警概率恒定条件下对接收机输出的信号与噪声作判别以确定目标信号是否存在的技术. 前提 由于接收机输出端中肯定存有噪声(包括大气噪声.人为 ...
- 雷达无线电系列(一)几种常见的幅度分布函数(matlab)
文件下载地址: https://github.com/mufasa007/myblog/tree/master/%E9%9B%B7%E8%BE%BE%E6%97%A0%E7%BA%BF%E7%94%B ...
- Web 开发人员和设计师必读文章推荐【系列三十】
<Web 前端开发精华文章推荐>2014年第9期(总第30期)和大家见面了.梦想天空博客关注 前端开发 技术,分享各类能够提升网站用户体验的优秀 jQuery 插件,展示前沿的 HTML5 ...
- JVM系列三:JVM参数设置
JVM系列三:JVM参数设置.分析 不管是YGC还是Full GC,GC过程中都会对导致程序运行中中断,正确的选择不同的GC策略,调整JVM.GC的参数,可以极大的减少由于GC工作,而导致的程序运 ...
- 前端构建大法 Gulp 系列 (三):gulp的4个API 让你成为gulp专家
系列目录 前端构建大法 Gulp 系列 (一):为什么需要前端构建 前端构建大法 Gulp 系列 (二):为什么选择gulp 前端构建大法 Gulp 系列 (三):gulp的4个API 让你成为gul ...
- MyBatis学习系列三——结合Spring
目录 MyBatis学习系列一之环境搭建 MyBatis学习系列二——增删改查 MyBatis学习系列三——结合Spring MyBatis在项目中应用一般都要结合Spring,这一章主要把MyBat ...
- MySQL并发复制系列三:MySQL和MariaDB实现对比
http://blog.itpub.net/28218939/viewspace-1975856/ 并发复制(Parallel Replication) 系列三:MySQL 5.7 和MariaDB ...
- WCF编程系列(三)地址与绑定
WCF编程系列(三)地址与绑定 地址 地址指定了接收消息的位置,WCF中地址以统一资源标识符(URI)的形式指定.URI由通讯协议和位置路径两部分组成,如示例一中的: http://loc ...
- 【JAVA编码专题】 JAVA字符编码系列三:Java应用中的编码问题
这两天抽时间又总结/整理了一下各种编码的实际编码方式,和在Java应用中的使用情况,在这里记录下来以便日后参考. 为了构成一个完整的对文字编码的认识和深入把握,以便处理在Java开发过程中遇到的各种问 ...
随机推荐
- 新概念英语第二册Lesson5:No wrong numbers
Lesson 5 No wrong numbers 无错号之虞 First listen and then answer the question. 听录音,然后回答以下问题. What does ' ...
- Blockchain & BPM
http://www.infoq.com/cn/news/2018/07/blockchain-BPM?utm_source=notification_email&utm_campaign=n ...
- VS编译出错不自动运行上次的程序
- 安卓 android studio 报错 All flavors must now belong to a named flavor dimension. Learn more at https://d.android.com
这个问题是Android studio升级到3.0之后,运行的时候会提示gradle要升级到3.5版本才能编译.于是我把我的gradle升级到了 gradle-4.1-milestone-1 版本,是 ...
- 【esp8266】技术汇总帖
https://blog.csdn.net/xh870189248/article/details/80027961 这哥们 牛
- PLSQL集合类型的使用总结
PLSQL集合类型的使用总结 在pl sql 中,集合(collection) 是一组有序的元素组成的对象,这些元素的类型必须一致. pl sql 将collection 分成3 类,分别为Assoc ...
- Python3 IO编程之StringIO和BytesIO
StringIO 很多时候,数据读写不一定是文件,也可以在内存中读写. 要把str写入StringIO,我们需要先创建一个StringIO,然后像文件一样写入即可 >>> from ...
- centos下通过yum安装redis-cli
redis在第三方的源里,首先添加源,最常用的是epel源 yum install epel-release 然后就可以安装redis了 yum install -y redis 安装完成以后配置文件 ...
- Andrew Ng机器学习课程9-补充
Andrew Ng机器学习课程9-补充 首先要说的还是这个bias-variance trade off,一个hypothesis的generalization error是指的它在样本上的期望误差, ...
- android基础---->数据保存到文件
Android使用与其他平台类似的基于磁盘的文件系统(disk-based file systems).这篇博客将描述如何在Android文件系统上使用File的读写APIs对Andorid的file ...