目录
前言
现有雷达体制主要分为两种,即脉冲雷达和调频连续波(FMCW)雷达。FMCW雷达发射线性调频信号,相比于普通脉冲雷达,其具有更大的带宽,因此其距离分辨率更高。FMCW雷达的发射信号形式具有多种,锯齿波、三角波等形式,本文主要针对线性调频的锯齿波信号进行演示,结合程序和原理对雷达信号处理流程进行演示,此处的处理过程主要用文字进行叙述,具体的公式可以在相应的资料中找到。
一、FMCW雷达
(一) 定义
FMCW雷达(Frequency-Modulated Continuous Wave Radar,调频连续波雷达)是一种通过发射频率随时间连续变化的电磁波信号,并利用发射信号与目标反射回波之间的频率差来测量目标距离和速度的雷达技术。其核心特点和工作原理如下:
定义与关键特征
- 连续波发射:与脉冲雷达不同,FMCW雷达持续发射电磁波信号,无脉冲间歇。
- 频率调制:发射信号的频率随时间按特定规律变化(如线性调频、三角波调频等)。
- 差频分析:通过混频器将发射信号与回波信号结合,生成差频信号(中频信号),提取目标信息。
工作原理
信号发射与接收
发射频率随时间变化的连续波(如线性调频),目标反射的回波信号因传播时间延迟与目标运动产生频率偏移。差频信号生成
发射信号与回波信号在混频器中混合,得到差频信号(频率为两者之差)。- 距离测量:差频与目标距离成正比(延迟时间越长,频率差越大)。
- 速度测量:通过多普勒效应引起的附加频率变化计算目标速度。
信号处理
对差频信号进行傅里叶变换等处理,分离出目标距离和速度信息。
(二) 信号形式
雷达的对应信号形式如下:
其中,雷达信号的频率呈现周期性的线性变化,且波形为连续波形式。其中涉及很多基础概念,例如脉冲重复频率,带宽,频率,采样频率等,其具体概念在此不再赘述。程序中针对这些基本的物理量进行了定义,对应的参数定义代码如下:
% 雷达信号参数
c = physconst('LightSpeed'); %光速
B = 150e6; %带宽:150M
fc = 77e9; %载频:77G
number_ADC = 256; % 每个脉冲周期内的信号采样数
number_Chirps = 256; %雷达每帧的脉冲数,即N
number_CPI = 10; %相干处理间隔,每个处理间隔中有Chrips_number个脉冲
T = 10e-6; % PRT 脉冲重复时间
PRF = 1/T; %脉冲重复频率
f_sample = number_ADC/T; % 采样频率
dt = 1/f_sample; %采样时间间隔
k = B/T; % 调频连续波的斜率
lambda = c/fc; % 波长
% 阵元参数
number_TX = 1; % 发射阵元数
number_RX = 8; % 接收阵元数
d_rx = lambda/2; % 发射单元间距
d_tx = 4*d_rx; % 接收单元间距
% 时间参数
N = number_ADC*number_Chirps*number_CPI; % CPI处理时间内的ADC采样总数
t = linspace(0,T*number_Chirps*number_CPI,N); %CPI处理时间
t_onePulse = 0:dt:dt*number_ADC-dt; % 单个脉冲之间的
% 速度参数
V_max = lambda/(T*4); % 最大不模糊速度
Doppler_max = 1/2*PRF; % Vmax/(c/fc/2); % 最大不模糊度多普勒频移
dV = lambda/(2*number_Chirps*T); % 距离分辨率
V = linspace(-V_max, V_max, number_Chirps); % 速度范围
% 距离参数
R_max = f_sample*c/(2*k); % 由ADC采样率推算出来的最大探测距离公式
R_max2 = c/2/PRF; % 由脉冲重复周期决定的最大探测距离
dR = c/(2*B); %距离分辨率
R = 0:dR:R_max-dR; % 距离范围
% 角度参数
ang_ax = -90:90; % 角度范围
% FFT相应参数
N_Dopp = number_Chirps; % 多普勒 FFT 长度
N_range = number_ADC; % 距离 FFT 长度
N_azimuth = number_TX*number_RX;
二、FMCW雷达信号处理流程
信号处理的对应流程图如下:
(一)雷达射频前端信号处理
在雷达射频前端信号处理过程中,主要分为两种方式。一种是将雷达接收信号与雷达发射信号直接混频得到零中频信号,第二种方法是利用本振信号与雷达接收信号混频,下变频之后得到中频信号,再进行下变频之后得到基带信号。实现下变频的方式主要是正交相位检波。
对应部分代码如下:
%计算不同目标的接收信号
signal_transmit = zeros(length(t),1);
signal_recieve = cell(1,Q);
signal_recieve(:) = {zeros(length(t),1)};
for q = 1:Q
delay{i,j} = (vecnorm(tar_loc{q}-repmat(rx_loc{j},N,1),2,2)+vecnorm(tar_loc{q}-repmat(tx_loc{i},N,1),2,2))/c;
for k = 1:number_Chirps*number_CPI % number_Chirps*number_CPI 为发射周期内的脉冲个数
phase_transmit = phase(t_onePulse,fc); % 雷达发射信号中每个脉冲周期内的相位
phase_recieve = phase(t_onePulse-delay{i,j}(k*number_ADC),fc);% 不同目标的雷达接收信号中每个脉冲周期内的相位
signal_transmit((k-1)*number_ADC+1:k*number_ADC,1) = exp(1j*phase_transmit);
signal_recieve{q}((k-1)*number_ADC+1:k*number_ADC,1) = exp(1j*(phase_transmit - phase_recieve));
end
%生成噪声
NoisePower=-5;% (dB);% 噪声功率(目标为0dB)
SystemNoise=normrnd(0,10^(NoisePower/10),N,1)+1i*normrnd(0,10^(NoisePower/10),N,1);% 产生均值为0,标准差为10^(NoisePower/10),大小为1*1920的正态(高斯)分布矩阵
signal_recieve{q}= signal_recieve{q} + SystemNoise;
end
% 信号混合
for q = 1:Q
mixed{i,j} = mixed{i,j}+signal_recieve{q};
end
对应仿真结果如下:
(二)2D-FFT(距离维+速度维)
针对单个Chirp信号的采样点做FFT变换,解析得到差频,得到相应的距离。针对多个Chirp信号的相位做FFT变换,最终得到2D的range-doppler FFT变换图。
对应部分仿真代码如下:
RDMs = zeros(number_ADC,number_Chirps,number_TX*number_RX,number_CPI);
for i = 1:number_CPI
RD_frame = RDC(:,(i-1)*number_Chirps+1:i*number_Chirps,:);
RDMs(:,:,:,i) = fftshift(fft2(RD_frame,N_range,N_Dopp),2);
end
figure
imagesc(V,R,20*log10(abs(RDMs(:,:,1,1))/max(max(abs(RDMs(:,:,1,1))))));
对应仿真结果如下:
(三)恒虚警检测
CA-CFAR(单元平均恒虚警)通过动态调整检测阈值,使虚警概率恒定。其根据目标周围参考单元的噪声功率均值估计背景,避免固定阈值导致的虚警率波动。
对应部分仿真代码如下:
%% CFRA 恒虚警检测
numGuard = 2; % # 保护单元
numTrain = numGuard*3; % # 训练单元
P_fa = 1e-4; % 虚警概率
SNR_OFFSET = -5; % dB
RDM_dB = abs(RDMs(:,:,1,1))/max(max(abs(RDMs(:,:,1,1)))); % 归一化处理,只针对第一个接收通道内的第一帧进行检测
[RDM_mask, cfar_ranges, cfar_dopps, K] = Ca_cfar(RDM_dB, numGuard, numTrain, P_fa, SNR_OFFSET);
figure
h=imagesc(V,R,RDM_mask);
对应仿真结果如下:
(四)DOA估计-MUSIC算法
MUSIC(多重信号分类)算法利用阵列接收数据的协方差矩阵特征分解,分离信号子空间与噪声子空间,通过噪声子空间与阵列流形向量的正交性估计波达方向(DOA)。
对应部分仿真代码如下:
d = 0.5;
M = number_CPI; % # 相干积累数
for k=1:length(ang_ax)
a1(:,k)=exp(-1i*2*pi*(d*(0:number_TX*number_RX-1)'*sin(ang_ax(k).'*pi/180))); %方向矢量
end
% RDMs为二维的FFT变换
for i = 1:K
Rxx = zeros(number_TX*number_RX,number_TX*number_RX);
for m = 1:M
A = squeeze(RDMs(cfar_ranges(i),cfar_dopps(i),:,m));
Rxx = Rxx + 1/M * (A*A');
end
[Q,D] = eig(Rxx); % Q: eigenvectors (columns), D: eigenvalues
[D, I] = sort(diag(D),'descend');
Q = Q(:,I); % Sort the eigenvectors to put signal eigenvectors first
Qs = Q(:,1); % Get the signal eigenvectors
Qn = Q(:,2:end); % Get the noise eigenvectors
for k=1:length(ang_ax)
music_spectrum(i,k)=(a1(:,k)'*a1(:,k))/(a1(:,k)'*(Qn*Qn')*a1(:,k));
end
end
对应仿真结果如下:
总结
以上为FMCW雷达的测距、测速、测角信号处理流程仿真,初学者可以对照代码及书本上的知识进行对照学习,更好地理解雷达的工作原理及方式,提升对于雷达系统的认识,提升自身的工程水平。