Radar Radio series (three) classical CFAR threshold factor alpha calculation algorithm (MATLAB)

Introduction This collection door CFAR algorithm CA, SO, GO, OS, and other clutter map threshold factor solution method and function

 

1, CA-CFAR [very simple and can be directly solved]

%% _ Mean CFAR threshold factor is calculated 
%% Version: V1 
%% Time: 2019.11.08 
%% final optimized version [not] 

function [Alpha] = form_ALPHA_ca (the PFA, N) 
% for this function is shown here FORM_ALPHA_CA summary 
% PFA: probability of false alarm 
% N: the number of reference cells 

. Alpha = N * (the PFA ^ (- 1./N)-1);. 

End

  

2, SO-CFAR threshold factor [Solving this is a very complex higher-order functions, can not be solved essentially by the inverse function, as used herein, binary solution] Solution of

PFA calculation function

%% _ mean probability of false alarm is selected from small 
%% Time: 2019.11.27 
%% Version: [V1] is not optimized 

function [the PFA] = form_PFA_so (ALPHA, N) 
% FORM_PFA_GO shown here on this function summaries 
% ALPHA: Threshold factor 
% N: the number of the reference window 

the PFA = 0; 
n-= N / 2; 
for I = 0:. 1-n- 
    the PFA + 2. * Gamma the PFA = (n-I +) Gamma ./ (. 1 + I) ./ Gamma . (n-) * (2 + ALPHA / n-.) ^ (- (n-I +));. 
End 

End

  

2,GO-CFAR

PFA calculation function

%% _ mean probability of false alarm is selected from a large 
%% Time: 2019.11.27 
%% Version: [V1] is not optimized 

function [the PFA] = form_PFA_go (ALPHA, N) 
% FORM_PFA_GO here show summaries on this function 
% ALPHA: Threshold factor 
% N: the number of reference windows 

the PFA = 0; 
n-= N / 2; 
for I = 0:. 1-n- 
    the PFA-2 * Gamma the PFA = (n-I +) Gamma ./ (. 1 + I) ./ Gamma. . (n-) * (2 + ALPHA / n-.) ^ (- (n-I +));. 
End 
the PFA = the PFA * 2 + (. 1 + ALPHA / n-.) ^ (- n-);.. 

End

  

3, SO WHAT 

Ordered false alarm probability %% _ 
%% Time: 2019.11.27 
%% Version: [V1] is not optimized 

function [the PFA] = form_PFA_os (ALPHA, N, Rate) 
% FORM_PFA_GO shown here on this function summaries 
% ALPHA: threshold factor 
% N: the number of reference windows 
% Rate: point ratio 

K = ceil (N. * Rate); 
. Gamma the PFA = (. 1 + N) * Gamma (N-K +. 1 + ALPHA) ./ Gamma (N- . 1 + K) Gamma ./ (. 1 + N + ALPHA); 

End

  

4, FIG Clutter

Point parameters

False alarm probability %% _ _ clutter map point parameter 
%% time: 2019.11.27 
%% Version: [V1] is not optimized 

function [the PFA] = form_PFA_cm_point (ALPHA, m, R & lt) 
% FORM_PFA_CM shown here on this function summary 
% ALPHA: threshold factor 
% m: an antenna rotation period of 

the PFA =. 1; 
for n-= 0: m-. 1 
    the PFA = the PFA * (. 1 + ALPHA * R & lt * (. 1-R & lt) ^ n-...) ^ -.. 1; 
End 

End

 

Surface parameters

False alarm probability %% _ _ surface clutter map parameters 
%% Time: 2019.11.27 
%% Version: [V1] is not optimized 

function [the PFA] = form_PFA_cm_surface (ALPHA, m, R & lt, M) 
% FORM_PFA_CM shown here on this digest function of 
% ALPHA: threshold factor 
% m: an antenna rotation period 
% m: a reference number of cells 

the PFA =. 1; 
for n-= 0: m-. 1 
    . the PFA = the PFA * (. 1 + ALPHA * R & lt * (. 1-R & lt.. .) ^ n./M).^-1; 
End 
End

  

5, two points Solution of the core functions

%% dichotomy solve the equations 
%% Time: 2019.11.27 
%% Version: v1 [not] optimization 

function [d1] = func_SOLUTION_binary (d1_scope, d2_precision, FUNC, the Parameter) 
% FUNC_SOLUTION_BINARY here displays a summary about this function 
% d1: known values 
% d2: a target value 
% d2_scope: [small initial target value range, a large value} 
% d1_precision: numerical precision target precision value [] 
% func: formula 
% parameter: customized parameters [type] 1 = ALPHA , D2 = End 

Shape = size (parameter); 
IF Shape (2) == 2% additional parameter only need to enter a parameter 
    the while. 1 
        D1 = Mean (d1_scope); 
        D2 = FUNC (D1, parameter (1,1)); % on essentially 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)) <from 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, the test sample and output

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);

The output shows:

 

Link: https: //pan.baidu.com/s/1mQjpBfzgAFYtsQLPPEAe7Q extraction code: 48p6

Guess you like

Origin www.cnblogs.com/Mufasa/p/11950154.html