⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tm_uwb_autocorrelation_receiver_detection_probability.m

📁 Back Projection imaging through wall
💻 M
字号:
%TM-UWB radar autocorrelation receiver detection charateristic
%-------------------------------------CFAR----------------------
clear
clc
%-------------------optimal correlation detection receiver--------------
% Q(x)=erfc(x)
pfa=10^(-2);   beta=erfcinv(pfa);

Tw=60*10^(-9);%range gate=60ns,observed range=60ns*15cm=9m

B=2*10^9; %Bandwidth=2GHz

df=B*Tw;%degreeth of freedom

SNR=-20:1:10; gamma_g=10 .^(SNR/ 10);

N=10; %the number of pulse cummlative

temp=sqrt(2*N*gamma_g );

pd=erfc(beta-temp);

[m,n]=size(pd);

for i=1:n if pd(i) > 1 ,    pd(i)=1; end ; end

figure(1);semilogy(SNR,pd,'ko-');hold on

%-------first receiver:differential self-correlation receiver(DTR)---
% Q(x)=erfc(x)

%pfa=10^(-4);   beta=erfcinv(pfa);

Tw=60e-9;%range gate=60ns,observed range=60ns*15cm=9m

B=2e9;   %Bandwidth=2GHz

df=B*Tw; %degreeth of freedom

SNR=[-20:1:10]; %dB

gamma_g=10 .^(SNR/ 10);

N=10; %the number of pulse cummlative

temp1 = beta - gamma_g .* sqrt(2 * N / df);

temp2 = sqrt( 1 + 2 * gamma_g ./ df );

pd2=erfc(temp1 ./ temp2);

[m,n]=size(pd2);

for i=1:n
    
    if pd2(i) > 1 ,    pd2(i)=1; end ;
    
end

figure(1);plot(SNR,pd2,'k*-');hold on;

%-------second receiver:differential averaged self-correlation receiver(WADTR)---
%--------------------------build target model------------------
%-----------------two bodyes targets---one 1m second 3m range gate 6m(40ns)-----------------------
%------dispersive central 1.55m,1.66m,1.75m,3m,3.08m,3.13m----------------

%---------------------second-order gaussian pulse (fc,tm,tau)---------------
tau=0.5e-9;   tm=1e-9;%1ns

fc=50e9;%50GHz

dt=1/fc; over=floor(tm/dt);   e=mod(over,2);

kbk=floor(over/2);

tmp=linspace(dt,tm/2,kbk);

s=(1-4*pi* (tmp./tau).^2 ) .* exp(-2*pi* (tmp./tau).^2);

if e  %sample=odd number
    for k=1:length(s)
        
        y(kbk+1)=1;        y(kbk+1+k)=s(k);        y(kbk+1-k)=s(k);
        
    end
else %sample=even number
    for k=1:length(s)
        
        y(kbk+k)=s(k);        y(kbk+1-k)=s(k);
        
    end
end

E=sum((y.^2).*dt );%pulse energy
w0=y./ sqrt(E); % energy normalization
Td=60e-9; %period of pulse =TD=100ns
power=0; % average transmitted power (dBm watt)
power1=(10^(power/10))/1000;%% average transmitted power (watt)
Ex=power1*Td; %energy per pulse
w0=w0.*sqrt(Ex);

%w0=y;figure(2); plot(w0),xlabel('ns');ylabel('second order Gaussian pulse')

%-----------------generate one dimensional high resolution range profile -
Range=[1.55,1.66,1.75,3,3.08,3.13];   gain=[1,0.85,0.6,1,0.85,0.6];

%Range=[1.55,1.66,1.75];gain=[1,0.85,0.6,];


C=3*10^8;   Range_delay=2*Range/C;

Range_position_sample=floor(Range_delay/dt);

Tw=60e-9;  %gate duration=60ns

gate_samples=floor(Tw/dt);

gate_seq=zeros(1,gate_samples);

for i=1:length(Range_delay)    

    k=Range_position_sample(i);
    
 if e   %sample=odd number
       gate_seq(k-kbk:k+kbk)=gate_seq(k-kbk+1:k+kbk+1) + w0 * gain(i);
else %sample=even number
       gate_seq(k-kbk+1:k+kbk)=gate_seq(k-kbk+1:k+kbk) + w0 * gain(i);
 end
    
end

%----------------signal ------------------

HRRP= gate_seq;

%-------------introduce additive white Gaussian noise over signal

ebno=[-20:1:10];                     %SNR=E/NO

E_Tw = sum( abs( HRRP ).^2) /gate_samples; % average range gate energy

EbNo=10.^(ebno./10);

N0=E_Tw ./ EbNo; % averge noise power

nstdv=sqrt(N0./2); 

%------------------generate noise signal in order to check correct of noise energy-----------------------------

for j=1:length(EbNo)
    
     noise(j,:)= nstdv(j).*randn(1,gate_samples) ;  N00(j)= sum(abs(noise(j,:)).^2)/gate_samples;   N11(j)=std( noise(j,:)).^2;
   
end
%figure(2),plot(HRRP_add_noise(1,:));

%----------generate reference module signal---------average advanced M group receiver signal of range gate 
M=3;

HRRP_add_noise1=zeros(length(EbNo),gate_samples);

for m=1:M
    
    for j=1:length(EbNo)
        
     HRRP_add_noise1(j,:)=HRRP_add_noise1(j,:) + HRRP + nstdv(j).*randn(1,gate_samples) ;
    
    end
 
end

module_noise=HRRP_add_noise1./M;

%-----------------------differential crosscorrelation----------------
Tm=20e-9;        % 10ns----sub-interval width duration ----------------------

Tm_sample=floor(Tm/dt);

Number_sub_interval=floor(gate_samples/Tm_sample);

move_interval=10e-9;%start point interval = 1ns

move_sample=floor(move_interval/dt);

Number_sub_interval1=floor((gate_samples - Tm_sample) / move_sample);

if ( (gate_samples - Number_sub_interval1 * move_sample )== Tm_sample)
    
    Number_sub_interval=Number_sub_interval1+1;
    
else
    
    Number_sub_interval=Number_sub_interval1;
    
end
Number_sub_interval
Number_sub_interval1

%---------------------accumulated N receive_siganl and siganl+niose_energy ---------------------
  
N=10;     %--number of pulse cummlative------------- 

receive_HRRP_add_noise1=zeros(length(EbNo),gate_samples);

for kk=1:N
%----------receiver signal---------
for j=1:length(EbNo)

    receive_HRRP_add_noise1(j,:) = receive_HRRP_add_noise1(j,:) + HRRP + nstdv(j).*randn(1,gate_samples) ;
    
end

end

%-----------------------------siganl+niose_energy of sub_interval---------
for j=1:length(EbNo)
    
for i=1:Number_sub_interval
    
    %------------------------move windows detection-----------
    ll = module_noise  (j, (i-1) * move_sample + 1 : (i-1) * move_sample +  Tm_sample);
    
    mm = receive_HRRP_add_noise1(j, (i-1) * move_sample + 1 : (i-1) * move_sample +  Tm_sample);
    
    energy_sub_interval(j,i)= (ll * mm') /gate_samples;

end
end
%figure(4),plot(energy_sub_interval(10,:));
 
%-------------------if echo signal have target signal, then the energy integration_sub_interval of signal---------------------
for j=1:length(EbNo)
    
for i=1:Number_sub_interval

     %------------------------move windows detection-----------
    mmm = HRRP((i-1) * move_sample + 1 : (i-1) * move_sample + Tm_sample );
    
    signal_energy_sub_interval(j,i)= N * (mmm * mmm') / gate_samples;
    
end

end

%----------------------calculate detection probability----------------
%pfa=10^(-4);   beta=erfcinv(pfa);

B=2*10^9; %Bandwidth=2GHz

df=B*Tm;%degreeth of freedom

%--------MRC(maximum ratio combination)---------------

weight_MRC1=(energy_sub_interval);   

%weight_MRC2=sqrt(abs(energy_sub_interval));    %weight_MRC1=weight_MRC2;

%--------EGC(equal gain combination)---------------

%weight_EGC=ones(length(EbNo),Number_sub_interval);  weight_MRC1=weight_EGC;

%---------------SD(select diversity)------------
th=0.03;  
weight_SD=zeros(length(EbNo),Number_sub_interval);
for j=1:length(EbNo)
   for i=1:Number_sub_interval
       if energy_sub_interval(j,i)>th
        weight_SD(j,i)=1;
    end
   end
end
%weight_MRC1=weight_SD;

%-----------calculate detection probability----------------------------------------------

for j=1:length(EbNo)
    
temp1 = beta * sqrt( 1/(2*M) * N * df * N0(j)^2 * weight_MRC1(j,:) * weight_MRC1(j,:)' ) - ....
           weight_MRC1(j,:) * signal_energy_sub_interval(j,:)';

temp2 = sqrt( ( 1 + 1/M ) *  N0(j) / 2 * ( (weight_MRC1(j,:).^2 ) * signal_energy_sub_interval(j,:)') ....
        + 1/( 2 * M) * N * df * N0(j)^2 * (weight_MRC1(j,:) * weight_MRC1(j,:)' ) );

pd3(j)= erfc(temp1 /temp2);

if pd3(j) > 1 ,    pd3(j)=1; end

end ;
%%%-----------------plot ---------------------------
figure(1)

PT=plot(ebno,pd3,'r^-');hold on,

set(PT,'LineWidth',[1]);set(gca,'yscale','linear');set(gca,'ytick',[0 0.2 0.4 0.6 0.8 1]);

X=xlabel('SCR (dB)'); set(X,'FontSize',12);

Y=ylabel('Detection Probability (Pd)');  set(Y,'FontSize',12);
grid

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -