前言 本文匯集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