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