我们知道,电磁波的传播速度为光速 c c c,若雷达与目标之间的距离为 R R R,则雷达发出的电磁波到达目标,再经过目标反射后被雷达接收到,所用的时间 τ τ τ 为:
τ = 2 R c τ=\frac{2R}{c} τ=c2R
时间 τ τ τ 称为发射信号与回波信号的时延,对于LFMCW雷达,在一个调制周期内,发射信号与接收信号的差频 f b f_{b} fb 为:
f b = μ τ f_{b}=μτ fb=μτ
进而可以得到: f b = μ 2 R c f_{b}=μ\frac{2R}{c} fb=μc2R,说明目标与雷达之间的相对距离 R R R 跟信号混频后的差频 f b f_{b} fb 成正比。
一般情况下,雷达的调频斜率 μ μ μ 是固定的,电磁波在空气中的传播速度 c c c 约为 3 × 1 0 8 3×10^{8} 3×108,所以要测量目标的距离 R R R,只需要计算差频 f b f_{b} fb 即可。
发射信号与接收信号经过混频、低通滤波等处理后,得到中频信号(IF),此时的中频信号为模拟信号,需要用ADC将模拟信号转换为数字信号,才可以进行后续处理。ADC采样后的信号为离散点,借助离散傅里叶变换(DFT),将中频信号从时域变换到频域,从而计算出信号的频率。
在实际工程应用中,为了计算的实时性,通常采用离散傅里叶变换的快速算法——快速傅里叶变换(FFT)来实现信号的时频转换。
(1)最大测量距离
设中频信号的频率为 f I F f_{IF} fIF, f I F = f b = μ 2 R c f_{IF}=f_{b}=μ\frac{2R}{c} fIF=fb=μc2R,所以目标的最大可测量距离为:
R m a x = f I F m a x c 2 μ R_{max}=\frac{f_{IF_{max}}c}{2μ} Rmax=2μfIFmaxc
而信号经过ADC采样后,可测量的信号最大频率受限于采样率 F s F_{s} Fs,即 F s > = f I F m a x = μ 2 R m a x c F_{s}>=f_{IF_{max}}=μ\frac{2R_{max}}{c} Fs>=fIFmax=μc2Rmax,从而得到:
R m a x = F s c 2 μ R_{max}=\frac{F_{s}c}{2μ} Rmax=2μFsc
实际上,无论是奈奎斯特采样还是带通采样,采样后可测量到有效的信号最大频率小于等于 F s / 2 F_{s}/2 Fs/2。
(2)距离点精度
距离点精度表示在频域上,一个频率点(频率分辨率)对应的目标距离,设中频信号的采样点为 N N N,进行 F F T FFT FFT 的点数为 N f f t N_{fft} Nfft,此时的频率分辨率为 △ f = F s N f f t △f=\frac{F_{s}}{N_{fft}} △f=NfftFs,从而得到距离点精度为:
R p o i n t = c 2 μ F s N f f t R_{point}=\frac{c}{2μ}\frac{F_{s}}{N_{fft}} Rpoint=2μcNfftFs
(3)距离分辨力
距离分辨率是指雷达对距离相近的两个目标的分辨能力。设两个目标与雷达之间的距离差为 △ R △R △R,则在频域上其频率相差为 △ f = △ R ⋅ 2 μ c △f=\frac{△R·2μ}{c} △f=c△R⋅2μ。
△ f > 1 T = > △ R ⋅ 2 μ c > 1 T = > △ R > c 2 μ ⋅ T △f>\frac{1}{T}=> \frac{△R·2μ}{c}>\frac{1}{T}=> △R> \frac{c}{2μ·T} △f>T1=>c△R⋅2μ>T1=>△R>2μ⋅Tc
又因为带宽 B = μ ⋅ T B=μ·T B=μ⋅T,所以 △ R > c 2 B △R>\frac{c}{2B} △R>2Bc,因此,距离分辨率的计算公式为:
R p o i n t = c 2 B R_{point}= \frac{c}{2B} Rpoint=2Bc
由距离点精度的计算公式易知,若信号进行 F F T FFT FFT 的点数 N f f t = N = F s ⋅ T N_{fft}=N=F_{s}·T Nfft=N=Fs⋅T,则有 △ R = c 2 B △R= \frac{c}{2B} △R=2Bc
(4)距离测量精度
距离测量精度是指雷达对目标的距离测量值与目标到雷达的真实距离之间的误差。噪声是影响雷达测量的最主要因素,通常采用测量值与真实值之差的均方根值来度量雷达的测距误差,即测距精度。
计算公式为:
σ R = c 2 B ⋅ s q r t ( 2 S N R ) σ_{R}=\frac{c}{2B·sqrt({2SNR})} σR=2B⋅sqrt(2SNR)c
(1)对固定目标的测量
设定一个距离为R1=1000m的目标,利用雷达测距方法在MATLAB上进行仿真验证,对混频后的信号加汉明窗,进行4096点FFT,得到其频谱图如下:
由图可知,目标峰值点出现在x=138的位置,根据距离点精度的计算公式 R p o i n t = c 2 μ F s N f f t R_{point}=\frac{c}{2μ}\frac{F_{s}}{N_{fft}} Rpoint=2μcNfftFs,得到 R p o i n t = 7.3192 R_{point}=7.3192 Rpoint=7.3192,所以目标距离测量结果为:
R m e = R p o i n t ∗ ( 138 − 1 ) = 1002.7 m R_{me}=R_{point}*(138-1)=1002.7m Rme=Rpoint∗(138−1)=1002.7m
与目标实际位置1000m,存在2.7m的测距误差。
(2)不同带宽下的距离分辨率
当带宽 B = 20 M H z B=20MHz B=20MHz 时,距离分辨率 △ R = c 2 B = 7.4948 m △R= \frac{c}{2B}=7.4948m △R=2Bc=7.4948m,测试多目标的分辨能力,设定两个目标的距离分别为1000m、1010m,得到目标的频谱图如下:
可以明显看出有两个目标尖峰,其在距离维的坐标为 x 1 = 137 , x 2 = 139 x1=137,x2=139 x1=137,x2=139,利用距离计算公式得到两个目标的测量距离为:$R1=995.4046m,R2=1010.0429m,由于两个目标距离较近,导致其中一个目标的测量结果出现较大的误差。
若将两个目标的距离拉近,设定两个目标的距离分别为1000m、1007m,得到目标的频谱图如下,此时只能看到一个目标的尖峰,其距离为1002.723m。
通过增加带宽来提高目标的距离分辨率,设定带宽 B = 30 M H z B=30MHz B=30MHz ,距离分辨率 △ R = c 2 B = 4.9965 m △R= \frac{c}{2B}=4.9965m △R=2Bc=4.9965m,测试对邻近目标的分辨能力,两个目标的距离分别为1000m、1007m,得到目标的频谱图如下:可以看出,依然只有一个目标,且距离为1002.723m。
出现这种情况的原因是,距离点精度 R p o i n t = 7.3192 m R_{point}=7.3192m Rpoint=7.3192m,即在频谱上每个点的代表的距离。
所以不能单纯依靠提高距离分辨率来区分两个邻近的目标,需要考虑到混频信号在距离维进行FFT后,每一个距离点代表的距离精度。
当带宽减小为 B = 10 M H z B=10MHz B=10MHz 时,距离分辨率 △ R = c 2 B = 14.9896 m △R= \frac{c}{2B}=14.9896m △R=2Bc=14.9896m,设定两个目标的距离分别为1000m、1010m,得到目标的频谱图如下:
此时在频谱上只能看到一个目标的峰值,由于两个目标的距离间隔10m,小于距离分辨率,所以雷达只能探测到一个目标。
clc;
clear;
close all;
%% LFM信号参数
B = 20e6; % 带宽
T = 100e-6; % 脉冲宽度
u = B/T; % 调频斜率
fs = 2*B; % 采样率
N = T*fs; % 采样点数
c = physconst('LightSpeed'); % 光速
f0 = 77e9; % 载频
Lambda = c/f0; % 波长
R_max = fs*c/(2*u); % 最大测量距离
%% 模拟信号
t = linspace(0,T,N);
Phase_t = @(f0,u,t) 2*pi*(f0*t+1/2*u*t.^2); % LFM信号的相位表达式
Signal_Tx = rectpuls(t-T/2,T).*exp(1j*Phase_t(f0,u,t)); % 发射信号
R0 = 1000; % 静止目标
tao = 2*R0/c; % 目标回波的时延
Signal_Rx = rectpuls(t-T/2,T).*exp(-1j*Phase_t(f0,u,(t-tao))); % 接收信号
% 混频
Signal_Mix = Signal_Tx.*Signal_Rx;
% 测距
win = hamming(N); % 加窗
Nfft = 4096; % FFT点数
R_point = (fs/Nfft)*c/(2*u); % 距离点精度
delta_R = c/(2*B); % 距离分辨率
fft_Data = fft(Signal_Mix.*win',Nfft);
figure;
subplot(2,1,1);plot(abs(fft_Data));title('距离维fft');xlim([0 400]);
subplot(2,1,2);plot(mag2db(abs(fft_Data)));title('距离维fft(db)');xlim([0 400]);