Files
Algorithm/GO_CFAR.m

82 lines
2.4 KiB
Mathematica
Raw Permalink Normal View History

2020-09-06 15:20:13 +08:00
% GO-CFAR<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>-
clc;clear all;close all;
N=36; %<EFBFBD>ο<EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
n=N/2; %<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
M=1e4; %<EFBFBD><EFBFBD><EFBFBD>ؿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
SNR_dB=5:1:35; %<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
SNR=10.^(SNR_dB./10);
Simul_len=length(SNR); %<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
T=0.8551;
Pd_GO1=0;
for i=1:length(SNR)
count=0;
for j=1:M
%%%%%%%%%%%<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>%%%%%%%%%%%%%%%%%%%%%%%
lambda=1;
u=rand(1,N-1);
exp_noise=log(u)*(-lambda);
%%%%%%%%%%%%<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><EFBFBD><EFBFBD>ز<EFBFBD>%%%%%%%%%%%%%%%%%%%
lambda=SNR(i)+1;
u=rand(1,2);
exp_target=log(u(1))*(-lambda);
exp_noise(N)=log(u(2))*(-lambda);
cfar_k=exp_target/max(sum(exp_noise(1:N/2)),sum(exp_noise((N/2+1):N)));
if (cfar_k>T)
count=count+1;
end
end
Pd_GO1(i)=count/M;
end
figure;
plot(SNR_dB,Pd_GO1,'b--','LineWidth',1.5);
hold on
Pd_GO2=0;
for i=1:length(SNR)
count=0;
for j=1:M
%%%%%%%%%%%<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>%%%%%%%%%%%%%%%%%%%%%%%
lambda=1;
u=rand(1,N-2);
exp_noise=log(u)*(-lambda);
%%%%%%%%%%%%<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><EFBFBD><EFBFBD>ز<EFBFBD>%%%%%%%%%%%%%%%%%%%
lambda=SNR(i)+1;
u=rand(1,3);
exp_target=log(u(1))*(-lambda);
exp_noise(N)=log(u(2))*(-lambda);
exp_noise(N-1)=log(u(3))*(-lambda);
cfar_k=exp_target/max(sum(exp_noise(1:N/2)),sum(exp_noise((N/2+1):N)));
if (cfar_k>T)
count=count+1;
end
end
Pd_GO2(i)=count/M;
end
plot(SNR_dB,Pd_GO2,'r--*','LineWidth',1.5);
hold on
Pd_GO3=0;
for i=1:length(SNR)
count=0;
for j=1:M
%%%%%%%%%%%<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>%%%%%%%%%%%%%%%%%%%%%%%
lambda=1;
u=rand(1,N-2);
exp_noise=log(u)*(-lambda);
%%%%%%%%%%%%<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><EFBFBD><EFBFBD>ز<EFBFBD>%%%%%%%%%%%%%%%%%%%
lambda=SNR(i)+1;
u=rand(1,3);
exp_target=log(u(1))*(-lambda);
exp_noise(N)=log(u(2))*(-lambda);
exp_noise(N-1)=log(u(3))*(-lambda);
exp_noise=[exp_noise(1:n-1) exp_noise(N-1) exp_noise(n:N-1) exp_noise(N)];
cfar_k=exp_target/max(sum(exp_noise(1:N/2)),sum(exp_noise((N/2+1):N)));
if (cfar_k>T)
count=count+1;
end
end
Pd_GO3(i)=count/M;
end
plot(SNR_dB,Pd_GO3,'g-.','LineWidth',1.5);
xlabel('<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(dB)');ylabel('<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>');
title('<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>GO-CAFR<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>N=36,Pf=1e-6');
legend('r=(0,1)','r=(0,2)','r=(1,1)');