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

📄 tm_uwb_energy_receiver_detection_probability.m

📁 Back Projection imaging through wall
💻 M
字号:
%TM-UWB radar energy receiver detection charateristic
%-------------------------------------CFAR----------------------
clear
clc

%-------------------correlation 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=100; %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

%--------------------------------Noncoherent detection--------------------------
%--------------------------------------------------------------------------
%------------------------energy detection (Square Law Energy Detection )(ED) ------
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]; %dB

gamma_g=10 .^(SNR/ 10); 

N=100;  %the number of pulse cummlative

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

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

pd=erfc(temp1./temp2);

[m,n]=size(pd);

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

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


%------weighted energy detection (Square Law Energy Detection -----(WED)
%--------------------------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);
%figure(2); plot(tau,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,3,5,7];
C=3*10^8;
Range_delay=2*Range/C;
Range_position_sample=floor(Range_delay/dt);
Tw=60*10^(-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 current signal------------
for j=1:length(EbNo)
   noise(j,:)=nstdv(j).*randn(1,gate_samples) ;
   HRRP_add_noise(j,:)=HRRP + noise(j,:);
end
for j=1:length(EbNo)
   N00(j)= sum(abs(noise(j,:)).^2)/gate_samples;   
   N11(j)=std( noise(j,:)).^2;
end
%plot(HRRP_add_noise(10,:));

% 10ns----sub-interval width duration ----------------------
Tm=5e-9;

Tm_sample=floor(Tm/dt);

Number_sub_interval=floor(gate_samples/Tm_sample);

move_interval=0.1e-9;%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
%------------------------accumulated N receive_siganl+niose_energy ---------------------
N=100;                  %the number of pulse cummlative-------------            

%-------------------if echo signal have target signal, then the signal energy integration_sub_interval---------------------

for j=1:length(EbNo)
    
for i=1:Number_sub_interval

    %------------------------move windows detection-----------
    ll2 = HRRP( (i-1) * move_sample + 1 : (i-1) * move_sample + Tm_sample) ;
    
    signal_energy_sub_interval_WED(j,i)= N * sum( ll2 .^ 2) / gate_samples;
    
end

end

%-----------------------------siganl+niose_energy of sub_interval---------
for j=1:length(EbNo)
    
for i=1:Number_sub_interval

  %------------------------move windows detection------------------------
    mm= HRRP_add_noise(j,(i-1) * move_sample + 1 : (i-1) * move_sample + Tm_sample);
    
    energy_sub_interval_WED(j,i)= sum( mm.^2 )/gate_samples;
    
end

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

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

df=B*Tm;%degreeth of freedom

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

weight_MRC1 = energy_sub_interval_WED;

%weight_MRC2=sqrt(abs(energy_sub_interval_WED));    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_WED(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( N* df * N0(j)^2 * weight_MRC1(j,:) * weight_MRC1(j,:)' ) -  weight_MRC1(j,:) * signal_energy_sub_interval_WED(j,:)';

temp2=sqrt( 2 * N0(j) * ( (weight_MRC1(j,:).^2 ) * signal_energy_sub_interval_WED(j,:)') ....
      +  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,'ks-');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('SNR (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 + -