clc
clear all;
close all;
%{
本程序实现的功能:
CA-CFAR,GO-CFAR,SO-CFAR,OS-CFAR的检测概率与SNR_dB的关系
程序的参考公式来自于文献:基于杂波图的恒虚警处理技术研究
Detection Loss Due to Interfering Targets in Ordered Statistics CFAR
%}
R=32; %参考单元长度
n=R/2; %半滑窗长度
k=3*R/4;
pfa=10^(-6); %虚警概率
%% CA-CFAR检测概率和SNR的关系
T_ca=pfa.^(-1./R)-1; %阈值系数
SNR_dB=0:30;
SNR=10.^(SNR_dB./10);
pd_ca=(1+(T_ca./(1+SNR))).^(-R); %CA-CFAR检测概率
%% OS-CFAR检测概率和SNR的关系
syms T
g=pfa-k*nchoosek(R,k)*gamma(R-k+1-T)*gamma(k)/gamma(R+T+1);
x=solve(g);
T=double(x);
T_os=T(T==abs(T)); %OS-CFAR检测门限
pd_os=k*nchoosek(R,k)*gamma(R-k+1+T_os./(1+SNR))*gamma(k)./gamma(R+T_os./(1+SNR)+1);
%%
pd=0;
syms T4;
for i=1:n
pd=pd+2.*nchoosek(n+i-2,i-1).*(2+T4).^(-n-i+1);
end
T_SO=solve(pd==pfa,T4);
T_SO=double(T_SO);
T_SO=T_SO(T_SO==abs(T_SO)); %求得SO-CFAR的门限因子。
pfa_go=2.*(1+T4).^(-n)-pd;
T_GO=solve(pfa_go==pfa,T4);
T_GO=double(T_GO);
T_GO=T_GO(T_GO==abs(T_GO)); %求得GO-CFAR的门限因子。
pd_so=0;
pd_go
for i=1:n
pd_so=pd_so+2.*nchoosek(n+i-2,i-1).*(2+T_SO./(1+SNR)).^(-n-i+1);
pd_go=pd_go+2.*nchoosek(n+i-2,i-1).*(2+T_GO./(1+SNR)).^(-n-i+1);
%SO-CFAR的检测概率
end
pd_go=2.*(1+T_GO./(1+SNR)).^(-n)-pd_go; %GO-CFAR的检测概率
plot(SNR_dB,pd_ca,'r');
hold on;
plot(SNR_dB,pd_go,'b');
hold on;
plot(SNR_dB,pd_so,'y');
hold on;
plot(SNR_dB,pd_os,'g');
grid on
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· Windows编程----内核对象竟然如此简单?