一,脉冲多普勒(PD处理)
多普勒效应:fd=2v/c*f0,v为镜像速度;
慢时间维上的采样点做FFT可以测出目标的速度;
使用复信号:频率正负可测量目标速度的方向;
clc;clear all;close all;
f0=10e9;%载频
tp=10e-6;%脉冲宽度
B=10e6;%带宽
fs=100e6;%采样频率
R0=3000;%初始距离
c=3e8;%光速
R=4500;%距离波门
gate=R+tp*c/2;%距离波门加脉宽对应距离
N=round(2*gate/c*fs);%波门内采样点个数
fft_N=2^nextpow2(N);
t=0:1/fs:tp;%信号长度
echo_t=linspace(0,2*gate/c,N);%波门长度
tau=2*R0/c;
k=B/tp;%调频系数
Tr=100e-6;%脉冲重复周期
CPI=64;%总脉冲个数
v=60;%目标速度,朝向雷达
%发射信号
s=exp(i*pi*k*t.^2);
%回波信号
for m=1:CPI
sb(m,:)=rectpuls((echo_t-2*(R0-(m-1)*v*Tr)/c-tp/2)/(tp)).*exp(1i*pi*k*(echo_t-2*(R0-(m-1)*v*Tr)/c).^2-1i*pi*2*f0*round(2*R0/c*fs)+1i*2*pi*(2*f0*v/c)*(m-1)*Tr)+sqrt(0.1)*(randn(1,N)+1i*randn(1,N));
end
%脉压
fft_n=2^nextpow2(length(t)+N-1);
fft_s=fft(s,fft_n);
for m=1:1:CPI
fft_sb(m,:)=fft(sb(m,:),fft_n);
fft_ssb(m,:)=ifft(fft_sb(m,:).*conj(fft_s));
z(m,:)=abs(fft_ssb(m,(1:N)));
z1(m,:)=z(m,:)/max(z(m,:));
z1(m,:)=20*log10(z1(m,:));
[maxval,maxpo]=max(z1(m,:));
end
%FFT
for fm=1:N
dop(:,fm)=fft(fft_ssb(:,fm));
a_dop(:,fm)=fftshift(abs(dop(:,fm)));
end
%求极大值对应的坐标
[maxva,max_v]=max(a_dop(:,maxpo));
%PD测速
fd=(max_v-33)/CPI/Tr;
v_pd=fd*c/2/f0
%测速范围
fd_max=1/Tr/2;
v_max=fd_max*c/2/f0
%测速精度
det_fd=1/Tr/64;
det_v=det_fd*c/2/f0
figure;
mesh(echo_t*c/2,linspace(-75,75,64),a_dop);
axis tight;
xlabel('距离:m');
ylabel('速度:m/s');
title('二维距离-多普勒平面');
v_pd =60.9375 v_max =75 det_v =2.3438
二,形心法测距测速
%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 形心法 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clc;clear all;close all
f0=10e9;%载频
tp=10e-6;%脉冲宽度
B=10e6;%带宽
fs=100e6;%采样频率
R0=3000;%初始距离
c=3e8;%光速
N=4096; %此为培训期间数据,实际情况可以根据波门和信号宽度求出N
t=(0:N-1)/fs;
snr=20;
tau=2*R0/c;
k=B/tp;%调频系数
Tr=100e-6;%脉冲重复周期
CPI=64;%总脉冲个数
v=60;%目标速度,朝向雷达
sigmaf=1^2/(10^(snr/10));
s=rectpuls(t-tp/2,tp).*exp(j*pi*k*(t-tp/2).^2);%发射信号
% figure;
% plot(t,real(s))
% xlabel('时间 /s');
% ylabel('幅度');
% title('发射信号实部');
% grid on
for m=1:CPI
taum=2*(R0-m*Tr*v)/c;
sb=rectpuls(t-taum-tp/2).*exp(j*pi*k*(t-taum-tp/2).^2).*exp(-2j*pi*f0*taum);%回波信号
sb_noise=sb+sqrt(sigmaf/2)*(randn(1,N)+1i*randn(1,N));%加噪声的回波信号
fft_ssb=ifft(fft(sb).*conj(fft(s)));%脉压处理
fft_ssb_snr=ifft(fft(sb_noise).*conj(fft(s)));
Group(m,1:N)=fft_ssb;
Group_snr(m,1:N)=fft_ssb_snr;
end
figure;
imagesc(t*c/2,1:CPI,abs(fft_ssb))
figure;
imagesc(t*c/2,1:CPI,abs(fft_ssb_snr))
for n=1:N
Group2=fft(Group(1:CPI,n));%纵向做FFT
Group2_2=fftshift(abs(Group2));
Group3(n,1:CPI)=Group2_2;
end
for n1=1:N
Group2_snr=fft(Group_snr(1:CPI,n1));%纵向做FFT
Group2_2_snr=fftshift(abs(Group2_snr));
Group3_snr(n1,1:CPI)=Group2_2_snr;
end
figure;
mesh(abs(Group3))
figure;
mesh(abs(Group3_snr))
[line,row]=find(abs(Group3)==max(max(abs(Group3))));
[line_snr,row_snr]=find(abs(Group3_snr)==max(max(abs(Group3_snr))));
Range=t*c/2;
PRF=1/Tr;
fd=(-CPI/2:CPI/2-1)*PRF/CPI;
v=fd*c/2/f0;
for Ra=line-3:line+3
amp=abs(Group3(Ra,row));
C(Ra)=amp*Range(Ra);
D(Ra)=sum(amp);
end
sum(C)/sum(D)
for V=row-3:row+3
index=abs(Group3(line,V));
E(V)=index*v(V);
F(V)=sum(index);
end
sum(E)/sum(F)
for Ra_snr=line_snr-3:line_snr+3
amp_snr=abs(Group3_snr(Ra_snr,row_snr));
C_snr(Ra_snr)=amp_snr*Range(Ra_snr);
D_snr(Ra_snr)=sum(amp_snr);
end
sum(C_snr)/sum(D_snr)
for V_snr=row_snr-3:row_snr+3
index_snr=abs(Group3_snr(line_snr,V_snr));
E_snr(V_snr)=index_snr*v(V_snr);
F_snr(V_snr)=sum(index_snr);
end
sum(E_snr)/sum(F_snr)
运行结果:
ans =3.0000e+003
ans =60.3560
ans =3.0000e+003
ans =60.3533
三,信号检测
结果:
mean_noise =0.0010 + 0.0079i
var_noise = 1.0123
pf1 =1.0000e-003
四,单脉冲测角仿真
单脉冲跟踪雷达是通过比较来自两个或多个同时波束的信号获得目标角位置信息的一种雷达;
目前常用的单脉冲测角方法主要有幅度和差单脉冲测角和相位和差单脉冲测角。幅度和差单脉冲测角通过比较两个相位中心重合但指向不同的波束得到目标角度信息;相位和差单脉冲测角则通过比较两个相位中心有一定距离但波束指向相互平行的波束得到目标角度信息。
相位和差单脉冲与幅度和差单脉冲的相似之处在于:目标角度坐标都是由一个和通道和两个差通道来提取的。主要不同之处在是,幅度和差单脉冲产生的四个信号具有相同的相位但具有不同的幅度,而相位和差单脉冲信号具有相同的幅度但有不同的相位。相位和差单脉冲对每个坐标系(方位和俯仰坐标)使用最少由两个阵元组成的阵列天线。相位误差信号是由于不同天线阵元产生的信号之间的相位差来计算得出的。
%%%%%%%%%%%%%%%%%%%%%%%% 单脉冲测角仿真 %%%%%%%%%%%%%%%%%%%%%%%%%%%%
f0=10e6;
R0=3e3;%目标距0号阵元的距离
d=10;%阵列接收天线之间的距离
theta0=0.2*pi/180;%目标角度
%R0=R0+d*sin(theta0)/2;
c=3e8;%光速
lamda=c/f0;
tau0=2*R0/c;%到0号阵元的时延
theta=linspace(-1*pi/180,1*pi/180,1000);
thetaP=0.15*pi/180;%偏置角
N=4;%天线个数
%% 幅度和差单脉冲测角
%相同相位不同幅度
%波束形成结果
Y=exp(2j*pi*f0*tau0)*exp(j*pi*(N-1)*d*sin(theta0)/lamda).*(sin(N*pi*d*(sin(theta0)-sin(theta))/lamda)./sin(pi*d*(sin(theta0)-sin(theta))/lamda));
thetaA=theta+thetaP;
thetaB=theta-thetaP;
%偏置波束A、B
Y_thetaA=exp(2j*pi*f0*tau0).*exp(j*pi*(N-1)*d*sin(theta0)/lamda).*(sin(N*pi*d*(sin(theta0)-sin(thetaA))/lamda)./sin(pi*d*(sin(theta0)-sin(thetaA))/lamda));
Y_thetaB=exp(2j*pi*f0*tau0).*exp(j*pi*(N-1)*d*sin(theta0)/lamda).*(sin(N*pi*d*(sin(theta0)-sin(thetaB))/lamda)./sin(pi*d*(sin(theta0)-sin(thetaB))/lamda));
%差波束
Y_delta=Y_thetaA-Y_thetaB;
%和波束
Y_sigma=Y;
%复比
Y_AB=Y_delta./Y_sigma;
thetaAB=linspace(0*pi/180,0.35*pi/180,1000);
%% 相位和差单脉冲测角
%相同幅度不同相位
%第一种配相方法
%波束1
beam1=exp(2j*pi*f0*tau0)*[exp(2j*pi*0*d*(sin(theta0)-sin(theta))/lamda)+exp(2j*pi*1*d*(sin(theta0)-sin(theta))/lamda)];
%波束2
beam2=exp(2j*pi*f0*tau0)*exp(2j*pi*2*d*sin(theta0)/lamda)*[exp(2j*pi*0*d*(sin(theta0)-sin(theta))/lamda)+exp(2j*pi*1*d*(sin(theta0)-sin(theta))/lamda)];
beam_sigma=beam1+beam2;%和波束
beam_delta=beam1-beam2;%差波束
beam_12=(beam1-beam2)./(beam1+beam2);%和差比
%% 第二种配相方法
%波束1
beam1_2=exp(2j*pi*f0*tau0).*[exp(2j*pi*0*d*(sin(theta0)-sin(theta))/lamda)+exp(2j*pi*1*d*(sin(theta0)-sin(theta))/lamda)];
%波束2
beam2_2=exp(2j*pi*f0*tau0).*exp(2j*pi*2*d*(sin(theta0)-sin(theta))/lamda).*[exp(2j*pi*0*d*(sin(theta0)-sin(theta))/lamda)+exp(2j*pi*1*d*(sin(theta0)-sin(theta))/lamda)];
beam2_sigma=beam1_2+beam2_2;%和波束
beam2_delta=beam1_2-beam2_2;%差波束
beam12_2=(beam1_2-beam2_2)./(beam1_2+beam2_2);%和差比