雷达信号处理基本流.docx
《雷达信号处理基本流.docx》由会员分享,可在线阅读,更多相关《雷达信号处理基本流.docx(28页珍藏版)》请在冰豆网上搜索。
雷达信号处理基本流
基本雷达信号处理流程
一、脉冲压缩
窄带(或某些中等带宽)的匹配滤波:
相关处理,用FFT数字化执行,即快速卷积处理,可以在基带实现(脉冲压缩)
快速卷积,频域的匹配滤波
脉宽越小,带宽越宽,距离分辨率越高;
脉宽越大,带宽越窄,雷达能量越小,探测距离越近;
D=BT(时宽带宽积);
脉压流程:
频域:
回波谱和参考函数共轭相乘
时域:
相关
即输入信号的FFT乘上参考信号FFT的共轭再逆FFT;
Sc=ifft(fft(Sb).*conj(fft(S)));
Task1
f0=10e9;%载频tp=10e-6;%脉冲宽度B=10e6;%信号带宽fs=100e6;%采样率R0=3000;%目标初始距离N=4096;c=3e8;tau=2*R0/c;beita=B/tp;t=(0:
N-1)/fs;
Sb=rectpuls(t-tp/2-tau,tp).*exp(j*pi*beita*(t-tp/2-tau).^2).*exp(-2j*pi*f0*tau);%回波信号
S=rectpuls(t-tp/2,tp).*exp(i*pi*beita*(t-tp/2).^2);%发射信号(参考信号)
So=ifft(fft(Sb).*conj(fft(S)));%脉压
figure(7);
plot(t*c/2,db(abs(So)/max(So)))%归一化dB
gridon
2、去斜处理(宽带的匹配滤波)
去斜处理“有源相关”,通常用来处理极大带宽的LFM波形(如果直接采样的话因为频带很宽所以在高频的时候需要的采样率就很大,采样点数就很多,所以要经过去斜处理)
Stretch方法是针对线性调频信号而提出的,其方法是将输入信号与参考信号(经适当延迟的本振信号,延迟量通常由窄带信号测距结果估计出)混频,则每一个散射点就对应一个混频后的单频分量,对混频输出的信号进行DFT处理,即可获得目标的距离像,对参考信号的要求是应具有与输入信号相同的调频斜率。
去斜处理流程:
混频过程为回波信号在时域与参考信号的共轭相乘
混频后得到一个瞬时频率和目标距离成正比的单频信号,对其进行频谱分析即可得到目标的距离像;
去斜处理一般情况下可降低信号带宽;
%%%%%%%%%%%%%%%%%%%%%%%%去斜处理仿真程序%%%%%%%%%%%%%%%%%%%%%%%%%
clc;clearall;closeall;
B=10e6;%带宽10MHz
tp=10e-6;%脉宽10us
k=B/tp;%LFM系数
fs=50e6;
R0=3e3;R1=2000;R2=3500;R=5000;
c=3e8;
f0=60e6;
N=round(2*R/c*fs);
fft_N=2^nextpow2(N);
t=linspace(0,2*R/c,N);
%%%%%%%%%%%%%%%%%%%%%%%%%%参考信号%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Sref=exp(2i*pi*f0*t).*exp(1i*pi*k*t.^2);
%%%%%%%%%%%%%%%%%%%%%%%%%%%回波信号%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Sb0=exp(1j*pi*k*(t-2*R0/c).^2).*exp(2j*pi*f0*(t-2*R0/c));
Sb1=exp(1j*pi*k*(t-2*R1/c).^2).*exp(2j*pi*f0*(t-2*R1/c));
Sb2=exp(1j*pi*k*(t-2*R2/c).^2).*exp(2j*pi*f0*(t-2*R2/c));
Sb=Sb0+Sb1+Sb2;
%%%%%%%%%%%%%%%%%%%%%%%%%%%混频信号%%%%%%%%%%%%%%%%%%%%%%%%%%%%
SSb=Sref.*conj(Sb);%去斜后时域信号
spectrum=fft(SSb,fft_N);%去斜后频域信号
f=fs*(0:
fft_N-1)/fft_N-fs/2;%从-fs/2到fs/2
f=f*c*tp/2/B;%瞬时频率对应的距离
sf=exp(-j*pi/k*f.^2);%滤波器传输函数
SSb=spectrum.*sf;%从频域去距离扭曲,实现了压缩和去RVP
figure;
SSb=fftshift(SSb);
SSb1=ifft(SSb);%消除了距离扭曲和RVP的时域信号
subplot(211);
plot(f,db(abs(SSb)/max(SSb)))
xlabel('距离/m');
gridon
subplot(212);
plot(f,abs(SSb))
xlabel('距离/m');
gridon
三、加窗
信号的截取产生了能量泄漏,而用FFT算法计算频谱又产生了栅栏效应,在FFT分析中为了减少或消除频谱能量泄漏及栅栏效应可采用不同的截取函数对信号进行截短,截短函数称为窗函数,简称窗。
%%%%%%%%%%%%%%%%%%%%%%%%窄带加窗处理%%%%%%%%%%%%%%%%%%%%%%%%
clc;clearall;closeall;
f0=10e9;%载频B=10e6;%信号带宽tp=10e-6;%脉冲宽度
fs=100e6;%采样频率k=B/tp;%LFM系数,线性调频率R0=3000;%初始距离c=3e8;%光速R=6000;
tau=2*R0/c;
N=round(2*R/c*fs);
fft_N=2^nextpow2(N);
t=(0:
fft_N-1)/fs;
s=rectpuls(t-tp/2,tp).*exp(j*pi*k*(t-tp/2).^2);%%发射信号
spectrum_s=fft(s,fft_N);%参考信号频谱
spectrum_s=fftshift(spectrum_s);
sb=rectpuls(t-tp/2-tau,tp).*exp(j*pi*k*(t-tp/2-tau).^2).*exp(-2j*pi*f0*tau);%%回波信号
%%时域加窗
sm=hamming(round(tp*fs))'.*s(1:
round(tp*fs));%参考信号加窗
%%频域加窗
%找频谱的-4dB压缩点,窗函数严格与该压缩点之间的频谱对应
hamming1=[zeros(1855,1)',hamming(387)',zeros(1854,1)'];
spectrum_sm=hamming1.*spectrum_s;
%%脉压
fft_ssb=ifft(fft(sb).*conj(fft(s)));
fft_smsb=ifft(fft(sb).*conj(fft(sm,length(sb))));
fft_spsb=ifft(fft(sb).*conj(fftshift(spectrum_sm)));
%%%%%%%%%%%%%%%%%%%%%%%%%%%去斜加窗处理%%%%%%%%%%%%%%%%%%%%%%%%%%%%
B=10e6;%带宽10MHztp=10e-6;%脉宽10usu=B/tp;%LFM系数
fs=50e6;%fs>=2*B/tp*tauR0=3000;%初始距离R=4500;%距离波门
c=3e8;f0=60e6;%载频
N=round(2*R/c*fs);fft_N=2^nextpow2(N);t=linspace(0,2*R/c,N);
f=fs*(0:
fft_N-1)/fft_N-fs/2;%从-fs/2到fs/2
%%%%%%%%%%%%%%%%%%%%%%%%%%参考信号%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Sref=exp(1i*pi*u*t.^2);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%回波信号%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Sb=rectpuls(t-2*R0/c,tp).*exp(1j*pi*u*(t-2*R0/c).^2);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%混频信号%%%%%%%%%%%%%%%%%%%%%%%%%%%%
ssb=Sref.*conj(Sb);
%%加窗
%w=hamming(502)';
%hamming=[zeros(749,1)',w-min(w),zeros(249,1)'];
%hamming=abs(hamming)/max(hamming);
hamming=[zeros(749,1)',hamming(502)',zeros(249,1)'];
ssb0=hamming.*ssb;
spectrum_ssb0=fft(ssb0,fft_N);%一维距离像
spectrum_ssb=fft(ssb,fft_N);
f=f*c*tp/2/B;%瞬时频率对应的距离
figure;%%图6
plot(f,db(abs(fftshift(spectrum_ssb))/max(fftshift(spectrum_ssb))))
holdon
plot(f,db(abs(fftshift(spectrum_ssb0))/max(fftshift(spectrum_ssb0))),'r')
holdoff
二、检测
1、脉冲多普勒(PD处理)
多普勒效应:
fd=2v/c*f0,v为镜像速度;
慢时间维上的采样点做FFT可以测出目标的速度;
使用复信号:
频率正负可测量目标速度的方向;
clc;clearall;closeall;
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);
%回波信号
form=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);
form=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
forfm=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);
axistight;
xlabel('距离:
m');
ylabel('速度:
m/s');
title('二维距离-多普勒平面');
v_pd=60.9375v_max=75det_v=2.3438
2、形心法测距测速
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%形心法%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clc;clearall;closeall
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('发射信号实部');
%gridon
form=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))
forn=1:
N
Group2=fft(Group(1:
CPI,n));%纵向做FFT
Group2_2=fftshift(abs(Group2));
Group3(n,1:
CPI)=Group2_2;
end
forn1=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;
forRa=line-3:
line+3
amp=abs(Group3(Ra,row));
C(Ra)=amp*Range(Ra);
D(Ra)=sum(amp);
end
sum(C)/sum(D)
forV=row-3:
row+3
index=abs(Group3(line,V));
E(V)=index*v(V);
F(V)=sum(index);
end
sum(E)/sum(F)
forRa_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)
forV_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
3、信号检测
结果:
mean_noise=0.0010+0.0079i
var_noise=1.0123
pf1=1.0000e-003
4、单脉冲测角仿真
单脉冲跟踪雷达是通过比较来自两个或多个同时波束的信号获得目标角位置信息的一种雷达;
目前常用的单脉冲测角方法主要有幅度和差单脉冲测角和相位和差单脉冲测角。
幅度和差单脉冲测角通过比较两个相位中心重合但指向不同的波束得到目标角度信息;相位和差单脉冲测角则通过比较两个相位中心有一定距离但波束指向相互平行的波束得到目标角度信息。
相位和差单脉冲与幅度和差单脉冲的相似之处在于:
目标角度坐标都是由一个和通道和两个差通道来提取的。
主要不同之处在是,幅度和差单脉冲产生的四个信号具有相同的相位但具有不同的幅度,而相位和差单脉冲信号具有相同的幅度但有不同的相位。
相位和差单脉冲对每个坐标系(方位和俯仰坐标)使用最少由两个阵元组成的阵列天线。
相位误差信号是由于不同天线阵元产生的信号之间的相位差来计算得出的。
%%%%%%%%%%%%%%%%%%%%%%%%单脉冲测角仿真%%%%%%%%%%%%%%%%%%%%%%%%%%%%
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);%和差比