智能型恆虛警率檢測算法


  轉發和使用請注明來源,以下為本人精心整理,還請尊重本人勞動成果與產權!由於本人現有知識和能力有限,如存在錯誤之處請指正!下面為正文內容:

  1.S-CFAR檢測算法(Switching,開關CFAR)

   S-CFAR檢測算法是通過參考單元內數據確定篩選門限,將小於篩選門限的參考單元划分至S0,將大於篩選門限的參考單元划分至S1,當S0的單元數目n0大於抗干擾數目時,可用S0來估計雜波背景功率水平。

  實現的步驟具體可以分為三步:

  (1)根據CA的思想求解出門限水平$T=\alpha Z$,其中$\alpha$為衰減系數(通過人為選擇)。

  (2)根據(1)中求解得到的門限水平T分別與參考窗內每個單元采樣值$x_i$進行比較,如果$x_i>T$則將$x_i$放入$S_1$序列,否則將$x_i$放入$S_0$序列中。

  (3)如果$S_0$序列中單元數目$n_0$超過整數門限$N_T$,那么采用$S_0$中的樣本估計閾值,反之則利用全體參考單元的樣本估計閾值。參考單元中是否存在目標的判決規則如下:

$x>\frac{\beta_0}{n_0}\Sigma_{x_i=S_0} x_i,n_0>N_T$ 

$x>\frac{\beta_1}{2N}\Sigma_{i=1}^{2N} x_i,n_0 <= N_T$

  其中,S-CFAR檢測算法的檢測性能與$\alpha$、$\beta_0$、$\beta_1$和$N_T$有關。S-CFAR的設計流程中可以簡化設計使$\beta_0=\beta_1=\beta$,其余參數的設計如下:(1)設計干擾目標數目(最大可容納的干擾目標數量)為$N_i$,整數門限$N_T$滿足關系$N_T=2N-N_i-1$.(2)在選定$N_T$以后,對每個區間的$\alpha$值,根據$P_{fa}$式可以計算出來門限系數$\beta$。

  改進的SOS-CFAR算法中,更新了判決規則為如下,其中$k$為選擇序號。

$x>\beta_0 x(k) x_i,n_0>N_T$  

$x>\frac{\beta_1}{2N}\Sigma_{i=1}^{2N} x_i,n_0 <= N_T$ 

  比較S-CFAR與SOS-CFAR兩種算法的區別主要在於更新了$n_0>N_T$時的判決規則(門限水平估計准則),這兩種算法的框圖可以如下圖表示(圖片繪制較粗糙,但可以反映原理)。

 

 

  為什么會出現上述兩種判決規則,如何理解$n_0$與整數門限$N_T$間的關系呢?我的理解是,如果背景雜波占據了$N_t/N$比例(這個比例比較大)的參考窗,那么可以用這部分的參考單元即$S
_0$的采樣值作為功率水平的估計(估計方式可以采用CA,OS等);反之如果背景雜波占據的比例非常小,其強度可以忽略不計,則可以用參考窗內全體采樣值的平均進行估計(准確地說此時參考窗內被強雜波占據)。
  

  理解判決規則后自然需要推導出S-CFAR算法的虛警概率$P_{FA}$,經典版本S-CFAR的虛警概率具體形式如下:

$$
P\left( N,N_T,\alpha ,\beta _0,\beta _1 \right) =\frac{1}{1+\sigma}\sum_{n_0=0}^{N_t}{\sum_{m=M_0}^{min\left( M,n_0 \right)}{\sum_{n=0}^{n_0-m}{\sum_{k=0}^m{\left( \begin{array}{c}
M\\
m\\
\end{array} \right)}}}}\left( \begin{array}{c}
2N-M\\
n_0-m\\
\end{array} \right) \left( \begin{array}{c}
n_0-m\\
n\\
\end{array} \right) \left( \begin{array}{c}
m\\
k\\
\end{array} \right) \frac{\left( -1 \right) ^{k+n}V\left( k,n \right)}{\left( 1+\sigma _I \right) ^M}+\frac{1}{1+\sigma}\sum_{n_0=N_t+1}^{2N}{\sum_{m=M_0}^{min\left( M,n_0 \right)}{\sum_{n=0}^{n_0-m}{\sum_{k=0}^m{\left( \begin{array}{c}
M\\
m\\
\end{array} \right)}}}}\left( \begin{array}{c}
2N-M\\
n_0-m\\
\end{array} \right) \left( \begin{array}{c}
n_0-m\\
n\\
\end{array} \right) \left( \begin{array}{c}
m\\
k\\
\end{array} \right) \frac{\left( -1 \right) ^{k+n}W\left( k,n \right)}{\left( 1+\sigma _I \right) ^m}
$$

  其中,$W(k,n)$的具體形式如下:

$$
\boldsymbol{W}\left( \boldsymbol{k},\boldsymbol{n} \right) =\frac{\boldsymbol{\xi }_{\boldsymbol{k},\boldsymbol{n}}^{\boldsymbol{n}_0}\left[ 1-\frac{\boldsymbol{\xi }_{k,\boldsymbol{N}}\boldsymbol{\sigma }_{\boldsymbol{I}}}{\left( 1+\sigma _I \right) \left( \boldsymbol{\xi }_{k,\boldsymbol{n}}+\boldsymbol{\rho }_{k,\boldsymbol{n}}+\left( 1+\sigma \right) ^{-1} \right)} \right] ^{-\boldsymbol{m}}}{\left( \boldsymbol{\rho }_{k,\boldsymbol{n}}+\left( 1+\sigma \right) ^{-1} \right) \left( \boldsymbol{\xi }_{k,\boldsymbol{n}}+\boldsymbol{\rho }_{k,\boldsymbol{n}}+\left( 1+\sigma \right) ^{-1} \right) ^{\boldsymbol{n}_0}}
\\
\boldsymbol{\xi }_{k,\boldsymbol{n}}=\boldsymbol{n}_0\beta _0^{-1}-\left( \boldsymbol{k}+\boldsymbol{n} \right) \alpha \geqslant 0
\\
\boldsymbol{\rho }_{k,\boldsymbol{n}}=\alpha \left[ \frac{\boldsymbol{M}-\boldsymbol{m}+\boldsymbol{k}}{1+\sigma _I}+2\boldsymbol{N}-\boldsymbol{M}-\boldsymbol{n}_0+\boldsymbol{m}+\boldsymbol{n} \right]
$$

   其中,$V(k,n)$的具體形式如下:

$$
\boldsymbol{V}\left( \boldsymbol{k},\boldsymbol{n} \right) =\frac{\boldsymbol{\xi }_{\boldsymbol{k},\boldsymbol{n}}^{2\boldsymbol{N}}\left[ 1-\frac{\boldsymbol{\xi }_{k,\boldsymbol{N}}\boldsymbol{\sigma }_{\boldsymbol{I}}}{\left( 1+\sigma _I \right) \left( \boldsymbol{\xi }_{k,\boldsymbol{n}}+\boldsymbol{\rho }_{k,\boldsymbol{n}}+\left( 1+\sigma \right) ^{-1} \right)} \right] ^{-\boldsymbol{M}}}{\left( \boldsymbol{\rho }_{k,\boldsymbol{n}}+\left( 1+\sigma \right) ^{-1} \right) \left( \boldsymbol{\xi }_{k,\boldsymbol{n}}+\boldsymbol{\rho }_{k,\boldsymbol{n}}+\left( 1+\sigma \right) ^{-1} \right) ^{2\boldsymbol{N}}}
\\
\boldsymbol{\xi }_{k,\boldsymbol{n}}=2\boldsymbol{N}\beta _{1}^{-1}-\left( 2\boldsymbol{N}-\boldsymbol{n}_0+\boldsymbol{k}+\boldsymbol{n}+\alpha \right) \geqslant 0
\\
\boldsymbol{\rho }_{k,\boldsymbol{n}}=\alpha \left[ \frac{\boldsymbol{M}-\boldsymbol{m}+\boldsymbol{k}}{1+\sigma _I}+2\boldsymbol{N}-\boldsymbol{M}-\boldsymbol{n}_0+\boldsymbol{m}+\boldsymbol{n} \right]
$$

  上述虛警概率和相關公式主要參考了“Constant false-alarm rate algorithm based on test cell information”等論文(可在谷歌學術上搜索得到),具體公式推導由於篇幅問題不再展開。從虛警概率公式可見,該公式與先前的恆虛警率檢測算法的虛警概率公式(多為關於門限系數$\alpha$的閉合函數形式)不同,由多個變量(包含衰減系數$\alpha$,整數門限$N_t$,門限系數$\beta$,功率系數$\sigma$)共同作用,因此采用二分法求解門限系數顯得困難,故多篇論文中采用了交叉驗證的方式來求解合適的門限系數$\beta$。

  設置功率系數$\sigma_1$和$\sigma$為0,參考窗長度$2N=64$即$N=32$,設置整數門限$N_t=32$,設置衰減系數$\alpha$為[0.1,1]並且步進為0.1,設置門限系數$\beta$和$\beta_1$為[10:50]並且步進為0.1,代入上述的虛警概率公式中求解並取對數形式,可以得到虛警概率關於不同門限系數和衰減系數的曲線如下圖所示.可以看到當衰減系數從1降低至0.1時,S-CFAR的虛警概率曲線逐漸偏離CA-CFAR的虛警概率曲線,這意味着要實現相同的檢測性能時S-CFAR需要花銷比CA-CFAR更大的門限系數代價,同時在均勻背景下為實現相同的性能S-CFAR需要有更多的CFAR損失;而衰減系數更大時其逼近CA,這不利於多目標背景下的目標檢測。因此在衰減系數的選擇上需要進行折中選擇,這里可以選擇門限系數$\alpha=0.3$.

 

 

 

  選擇完合適的衰減系數后需要進一步確定整數門限$N_t$,整數門限的選擇影響着最大可容納干擾數目($N_i=nN-N_t-1$)。從圖中可見,隨着整數門限的下降,虛警概率$P_{fa}$關於門限系數$\beta$的曲線會逐漸偏離$N_t=32$時的曲線。整數門限越大,意味着參考窗內可容納干擾數目越小,對多目標背景下目標檢測越不利。因此,選擇合適的整數門限,對多目標背景檢測是有意義的。這里可以選擇整數門限$N_t=17$。

 

   綜上分析,這里可以選擇的參數為:虛警概率$p_{fa}=10^{-5}$,衰減系數$\alpha=0.3$,整數門限$N_t=17$,門限系數$\beta=15.03$.

  以上程序的代碼如下所示。

 

%% S-CFAR的虛警概率計算
clc;clear;close all;

%% 參數設置
sigma = 0;
sigmaI = 0;
alpha_array = 0.1:0.1:1.0; %衰減系數
beta_array = 10:0.1:50;
M = 0;
N = 32;
Nt = 17;
Pfa = zeros(length(alpha_array),length(beta_array));

%% 計算虛警概率
for index = 1:length(alpha_array)
    alpha = alpha_array(index);
    for index1 = 1:length(beta_array)
        beta0 = beta_array(index1);
        Qn0 = 0;
        for n0 = 0:Nt
            M0 = max(0,n0 - 2 * N + M);
            for m = M0:min(n0,M)
                for n = 0:(n0-m)
                    for k = 0:m
                        rou = alpha * ((M - m + k) / (1 + sigmaI) + 2 * N - M - n0 + m + n);
                        phy =  2 * N / beta0  - (2 * N - n0 + k + n) * alpha;
                        if(phy < 0)
                            break;
                        else
                           V = phy^(2*N) * (1-(phy*sigmaI/(1+sigmaI)/(phy+rou+(1+sigma)^(-1)))^(-M)) / (rou+(1+sigma)^(-1)) / (phy+rou+(1+sigma)^(-1))^(2*N);
                           Qn0 = Qn0 + 1 / (1+sigma) * nchoosek(M,m) * nchoosek(2*N-M,n0-m) * nchoosek(n0-m,n) * nchoosek(m,k) * (-1)^(k+n) / (1+sigmaI)^M * V;
                        end
                    end
                end
            end
        end

        Pn0 = 0;
        for n0 = Nt+1:2*N
            M0 = max(0,n0 - 2 * N + M);
            for m = M0:min(M,n0)
                for n = 0:n0-m
                    for k = 0:m
                        phy = n0 / beta0 - (k + n) * alpha;
                        rou = alpha * ((M - m + k) / (1 + sigmaI) + 2* N - M - n0 + m + n);
                        if phy < 0
                            break;
                        else
                           W = phy^n0 * (1 - (phy*sigmaI/(1+sigmaI))/(phy+rou+(1+sigma)^(-1)))^(-m)/(rou +(1+sigma)^(-1))/(phy + rou + (1+sigma)^(-1))^n0;
                           Pn0 = Pn0 + 1 / (1+sigma) * nchoosek(M,m) * nchoosek(2*N-M,n0-m) * nchoosek(n0-m,n) * nchoosek(m,k) * (-1)^(k+n) * W / (1+sigmaI)^m;
                        end
                    end
                end
            end
        end
        Pfa(index,index1) = Pn0 + Qn0; 
    end
end
Pfa_ca = (1+beta_array/2/N).^(-2*N);
%% 繪制曲線
plot(beta_array,log10(Pfa_ca),'Color','#FFD700','LineWidth',2,'Marker','<','MarkerIndices',2:4:length(beta_array));hold on;
plot(beta_array,log10(Pfa(1,:)),'Color','#DC143C','LineWidth',2,'Marker','+','MarkerIndices',4:4:length(beta_array));hold on;
plot(beta_array,log10(Pfa(2,:)),'Color','#FF1493','LineWidth',2,'Marker','*','MarkerIndices',6:4:length(beta_array));hold on;
plot(beta_array,log10(Pfa(3,:)),'Color','#8B008B','LineWidth',2,'Marker','v','MarkerIndices',8:4:length(beta_array));hold on;
plot(beta_array,log10(Pfa(4,:)),'Color','#483D8B','LineWidth',2,'Marker','^','MarkerIndices',10:4:length(beta_array));hold on;
plot(beta_array,log10(Pfa(5,:)),'Color','#0000FF','LineWidth',2,'Marker','o','MarkerIndices',12:4:length(beta_array));hold on;
plot(beta_array,log10(Pfa(6,:)),'Color','#6495ED','LineWidth',2,'Marker','d','MarkerIndices',14:4:length(beta_array));hold on;
plot(beta_array,log10(Pfa(7,:)),'Color','#00BFFF','LineWidth',2,'Marker','p','MarkerIndices',16:4:length(beta_array));hold on;
plot(beta_array,log10(Pfa(8,:)),'Color','#00CED1','LineWidth',2,'Marker','s','MarkerIndices',18:4:length(beta_array));hold on;
plot(beta_array,log10(Pfa(9,:)),'Color','#00FA9A','LineWidth',2,'Marker','x','MarkerIndices',20:4:length(beta_array));hold on;
plot(beta_array,log10(Pfa(10,:)),'Color','#DAA520','LineWidth',2,'Marker','>','MarkerIndices',22:4:length(beta_array));hold on;
h = legend('CA','\alpha=0.1','\alpha=0.2','\alpha=0.3','\alpha=0.4','\alpha=0.5','\alpha=0.6','\alpha=0.7','\alpha=0.8','\alpha=0.9','\alpha=1.0','NumColumns',2);
set(h,'edgecolor','none');
xlabel('\beta');
ylabel('log_{10}Pfa');
grid minor;

 

 

%% S-CFAR的虛警概率計算
clc;clear;close all;

%% 參數設置
sigma = 0;
sigmaI = 0;
alpha = 0.3; %衰減系數
beta_array = 5:0.1:50;
M = 0;
N = 32;
Nt_array = 12:5:32;
Pfa = zeros(length(Nt_array),length(beta_array));

%% 計算虛警概率
for index = 1:length(Nt_array)
    Nt = Nt_array(index);
    for index1 = 1:length(beta_array)
        beta0 = beta_array(index1);
        Qn0 = 0;
        for n0 = 0:Nt
            M0 = max(0,n0 - 2 * N + M);
            for m = M0:min(n0,M)
                for n = 0:(n0-m)
                    for k = 0:m
                        rou = alpha * ((M - m + k) / (1 + sigmaI) + 2 * N - M - n0 + m + n);
                        phy =  2 * N / beta0  - (2 * N - n0 + k + n) * alpha;
                        if(phy < 0)
                            break;
                        else
                           V = phy^(2*N) * (1-(phy*sigmaI/(1+sigmaI)/(phy+rou+(1+sigma)^(-1)))^(-M)) / (rou+(1+sigma)^(-1)) / (phy+rou+(1+sigma)^(-1))^(2*N);
                           Qn0 = Qn0 + 1 / (1+sigma) * nchoosek(M,m) * nchoosek(2*N-M,n0-m) * nchoosek(n0-m,n) * nchoosek(m,k) * (-1)^(k+n) / (1+sigmaI)^M * V;
                        end
                    end
                end
            end
        end

        Pn0 = 0;
        for n0 = Nt+1:2*N
            M0 = max(0,n0 - 2 * N + M);
            for m = M0:min(M,n0)
                for n = 0:n0-m
                    for k = 0:m
                        phy = n0 / beta0 - (k + n) * alpha;
                        rou = alpha * ((M - m + k) / (1 + sigmaI) + 2* N - M - n0 + m + n);
                        if phy < 0
                            break;
                        else
                           W = phy^n0 * (1 - (phy*sigmaI/(1+sigmaI))/(phy+rou+(1+sigma)^(-1)))^(-m)/(rou +(1+sigma)^(-1))/(phy + rou + (1+sigma)^(-1))^n0;
                           Pn0 = Pn0 + 1 / (1+sigma) * nchoosek(M,m) * nchoosek(2*N-M,n0-m) * nchoosek(n0-m,n) * nchoosek(m,k) * (-1)^(k+n) * W / (1+sigmaI)^m;
                        end
                    end
                end
            end
        end
        Pfa(index,index1) = Pn0 + Qn0; 
    end
end

%% 繪制曲線
plot(beta_array,log10(Pfa(1,:)),'Color','#DC143C','LineWidth',2,'Marker','+','MarkerIndices',2:4:length(beta_array));hold on;
plot(beta_array,log10(Pfa(2,:)),'Color','#FF1493','LineWidth',2,'Marker','*','MarkerIndices',4:4:length(beta_array));hold on;
plot(beta_array,log10(Pfa(3,:)),'Color','#8B008B','LineWidth',2,'Marker','v','MarkerIndices',6:4:length(beta_array));hold on;
plot(beta_array,log10(Pfa(4,:)),'Color','#483D8B','LineWidth',2,'Marker','^','MarkerIndices',8:4:length(beta_array));hold on;
plot(beta_array,log10(Pfa(5,:)),'Color','#0000FF','LineWidth',2,'Marker','o','MarkerIndices',10:4:length(beta_array));hold on;
h = legend('Nt=12','Nt=17','Nt=22','Nt=27','Nt=32','NumColumns',1);
set(h,'edgecolor','none');
xlabel('\beta');
ylabel('log_{10}Pfa');
grid minor;

  

 

  將S-CFAR在鄰近單目標背景下進行仿真,隨機產生在200個距離單元內產生信雜比分別為15dB、20dB的鄰近目標,經典均值類ML-CFAR和有序統計類OS-CFAR以及S-CFAR的檢測結果如下圖所示,OS-CFAR和S-CFAR成功檢測除了鄰近目標,具有較好的多目標檢測性能。

 

   具體代碼如下所示。

 

clc;clear;close all;
%% 均勻背景
% % lambda = 1; %指數分布參數
% % dB = 20; %背景雜波功率
% % SCR = 15; %信雜比
% % num = [1,1024]; %距離單元設置
% % [x,target] = uniform_background(lambda,dB,SCR,num); %產生均勻背景

%% 多目標背景
lambda = 1; %指數分布參數
dB = 20; %背景雜波功率
SCR1 = 15; %信雜比
SCR2 = 20; %信雜比
num = [1,200]; %距離單元設置
localRule = [20,3,10]; %距離規則
[x,target] = multi_background(lambda,dB,SCR1,SCR2,num,localRule); %產生鄰近單目標背景

%% CFAR參數
Pfa = 1e-6; %虛警概率
NSlide = 32;%滑動單元大小
Pro_cell = 4; %保護單元大小

%% 繪圖參數
len = num(2);
plotNum = 2;
markersize = 5;
LineWidth = 1.5;
figure(1);
plot(target(:,1),form_Power_P2DB(target(:,2)),'s','Color',[1 0 1],'MarkerSize',markersize+2,'LineWidth',LineWidth),hold on; 
plot(form_Power_P2DB(x),'Color','[0.5 0.5 1]','LineWidth',LineWidth),hold on;

%% 恆虛警率檢測算法測試
Nt = 17;beta = 15.03;
rate = 0.75; %選擇序號
alpha(1,1) = ca_threhold(Pfa,NSlide); %CA-CFAR標稱因子計算
alpha(2,1) = go_threhold(Pfa,NSlide); %GO-CFAR標稱因子計算
alpha(3,1) = so_threhold(Pfa,NSlide); %SO-CFAR標稱因子計算
alpha(4,1) = os_threhold(Pfa,NSlide,rate); %OS-CFAR標稱因子計算

[result_S] = func_cfar_s(x,beta,NSlide,Nt,Pro_cell); %求解S-CFAR門限
[result_CA] = func_cfar_ca(x,alpha(1,1),NSlide,Pro_cell); %求解CA-CFAR門限
[result_GO] = func_cfar_go(x,alpha(2,1),NSlide,Pro_cell); %求解GO-CFAR門限
[result_SO] = func_cfar_so(x,alpha(3,1),NSlide,Pro_cell); %求解SO-CFAR門限
[result_OS] = func_cfar_os(x,alpha(4,1),NSlide,Pro_cell,rate); %求解OS-CFAR門限
%% 繪制檢測曲線
[T_opt] = T_opt_solve(Pfa,lambda,dB,num); %求解理想門限
plot(form_Power_P2DB(T_opt),'Color','#3CB371','Marker','+','MarkerIndices',2:plotNum:len,'LineWidth',LineWidth);
hold on;
plot(form_Power_P2DB(result_CA{1,2}),'Color','#DC143C','Marker','*','MarkerIndices',4:plotNum:len,'LineWidth',LineWidth);
hold on;
plot(form_Power_P2DB(result_GO{1,2}),'Color','#ADFF2F','Marker','v','MarkerIndices',6:plotNum:len,'markersize',markersize,'LineWidth',LineWidth);
hold on;
plot(form_Power_P2DB(result_SO{1,2}),'Color','#8A2BE2','Marker','^','MarkerIndices',8:plotNum:len,'markersize',markersize,'LineWidth',LineWidth);
hold on;
plot(form_Power_P2DB(result_OS{1,2}),'Color','#0000CD','Marker','o','MarkerIndices',10:plotNum:len,'markersize',markersize,'LineWidth',LineWidth);
hold on;
plot(form_Power_P2DB(result_S{1,2}),'Color','#7CFC00','Marker','p','MarkerIndices',12:plotNum:len,'markersize',markersize,'LineWidth',LineWidth);
hold on
grid minor;
xlabel('\fontname{宋體}距離單元');
ylabel('\fontname{宋體}功率值\fontname{Times New Roman}(dB)');
ylim([0 50]);
h = legend('TARGET','CLUTTER','OPT','CA-CFAR','GO-CFAR','SO-CFAR','OS-CFAR','S-CFAR','Location','SouthEast','NumColumns',1);
set(h,'edgecolor','none')

 

 

%% 本程序主要實現S-CFAR恆虛警率檢測算法的函數形式
function result = func_cfar_s(x,beta,NSlide,Nt,Pro_cell)
    %x:原始雜波數據
    %alpha:標稱因子
    %Nslide:滑動窗大小
    %Pro_cell:保護單元大小
    %Nt:整數門限

    persistent left; 
    persistent right;
    persistent Half_Slide;
    persistent Half_Pro_cell;
    persistent len;
    
    if isempty(left)
        left = 1 + Half_Pro_cell + Half_Slide; %設置左邊界
        right = length(x) - Half_Pro_cell - Half_Slide; %設置右邊界
        Half_Slide = NSlide / 2; %半滑動窗
        Half_Pro_cell = Pro_cell / 2; %一側保護單元長度
        len = length(x); %雜波單元
    end

    
    T = zeros(1,len); %CMLD檢測閾值
    target = java.util.LinkedList; %利用Java鏈表來實現目標的存儲

    for i = 1:left - 1 %左邊界
        cell_right = x(1,i + Half_Pro_cell + 1 : i + Half_Slide * 2 + Half_Pro_cell); 
        S0 = cell_right(cell_right <= mean(cell_right)); 
        S1 = cell_right(cell_right > mean(cell_right)); 
        if length(S0) > Nt
            T(1,i) = mean(S0) * beta; 
        else
            T(1,i) = mean(cell_right) * beta; 
        end
        if T(1,i) < x(i)
            target.add(i); %加入目標
        end
    end
    
    for i = left:right %中間區域
        cell_left = x(1,i - Half_Pro_cell - Half_Slide : i - Half_Pro_cell - 1);
        cell_right = x(1,i + Half_Pro_cell + 1 : i + Half_Pro_cell + Half_Slide);
        cell = [cell_left,cell_right];
        S0 = cell(cell <= mean(cell)); 
        S1 = cell(cell > mean(cell)); 
        if length(S0) > Nt
            T(1,i) = mean(S0) * beta; 
        else
            T(1,i) = mean(cell) * beta; 
        end
        if T(1,i) < x(i)
            target.add(i); %加入目標
        end
    end
    
    for i = right + 1 : len
        cell_left = x(1,i - Half_Pro_cell - Half_Slide * 2 : i - Half_Pro_cell - 1); 
        S0 = cell_left(cell_left <= mean(cell_left)); 
        S1 = cell_left(cell_left > mean(cell_left)); 
        if length(S0) > Nt
            T(1,i) = mean(S0) * beta; 
        else
            T(1,i) = mean(cell_left) * beta; 
        end
        if T(1,i) < x(i) 
            target.add(i);
        end
    end
    
    result = {'CFAR_S',T,target}; %采用字典類型
end
    
    

  

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM