这篇文章是对《毫米波雷达 3发4收 阵列信号回波模拟(基于信号的延时来建模)以及DOA和MVDR方法测角 (二)》中考虑速度因素,并将锯齿波的扫频模式修改为多chirp组合的线性连续调频波。
以下是matlab的程序:
%% 本程序为FMCW制式雷达发射信号与回波信号仿真,雷达采用3发4收构造MIMO虚拟孔径,仿阵列回波,以验证超分辨算法
% 本例程是基于发射信号的延时的方式来构建的个接受天线的回波数据,推导原理参考
%天线间距为半波长,发射频率为77G,目标信息可设置
%V04 此版本是在V01版本的基础上,考虑速度的影响,并构成二维扫频的方式,生成数据并验证
close all;clearvars;clc;
dbstop if error;
%------------------------参数设置----------------------------------------
F0 = 77e9; %载频
FS = 2E6; %中频信号采样率
samplenum = 256; %中频采样点数
T = samplenum / FS; %扫频的有效时长,也是一个chirp的有效时长
Tchirptime = T + 10e-6; %chirp的时长
chirpnumber = 128;
RPT = 50E-3; %每个frame的时长
B = 400E6; %信号带宽
u = B/T;
c = 3E8;
PL = 200; %快拍数,处理总时长为PL*RPT
RXannate = 4;
TXannate = 3;
virtueRxannate = TXannate * RXannate;
lamada = c/F0;
D = lamada/2;
t = (1/FS : 1/FS : samplenum/FS);
rsolution = c/2/B;
targetnumber= 3;
% 每一个目标的信息按顺序分别为距离(m)、速度(靠近为﹣,远离为+)(m/s)、角度(°)、信噪比 DB;
% 此处的距离是按照第一幅发射天线维坐标原点建立的相对位置
targetinfoR = [30 35.0 80]';
targetinfoV = [1 4 -5]';
targetinfoP = [10 11 15]';
signalAmplitude = [5 5 5]';
accelerate = [0.2 0.2 0.2]';
% 收发天线的物理排布位置
TXarraydis = [0 4*D 8*D]'; %发射天线在坐标轴上的位置
RXarraydis = TXannate*RXannate*D + [0 : 1 : RXannate-1]' * D; %接受天线在坐标轴上的位置
tgaptime = 0; % 时间记录标量,仅记录时间
h1 = figure;
for L = 1 : 1 : PL % 每一个frame周期循环 50e-3
tgaptime = RPT * (L - 1);
sr = zeros(virtueRxannate , samplenum*chirpnumber);
for chirpcnt = 1 : chirpnumber %计算每个chirp下的回波
TRVcacu = tgaptime + (chirpcnt-1)*Tchirptime; %当前时刻,用于确定当前的目标位置
targetinfoR_T(: , L) = targetinfoR + targetinfoV .* TRVcacu; %当前目标位置,用以计算延时等信息
fd = 2 * targetinfoV / lamada; %多普勒频率
% 根据目标位置计算目标在发射天线和接收天线之间的延时
for i = 1 : targetnumber %生成目标的TX延时txrtao
txrtao(:,i) = sqrt(repmat(targetinfoR_T(i , L)^2 , TXannate , 1) + TXarraydis.^2 - 2*targetinfoR_T(i , L)*TXarraydis.*cosd(90 - targetinfoP(i)))/c;
end
for i = 1 : targetnumber %生成目标的RX延时txrtao
rxrtao(:,i) = sqrt(repmat(targetinfoR_T(i , L).^2 , RXannate , 1) + RXarraydis.^2 - 2*targetinfoR_T(i , L)*RXarraydis.*cosd(90 - targetinfoP(i)))/c;
end
% 按照3法4收获取12副接受天线的距离延时,用于后续构造阵列使用
cnt = 1;
for i=1 : 1 : TXannate
for j = 1 : 1 : RXannate
taor(cnt,:) = txrtao( i , :) + rxrtao( j,:);
cnt = cnt + 1;
end
end
% 生成回波延时信号
SNR = 10.^(signalAmplitude / 10);
indx = (chirpcnt-1)*256+1;
for k = 1 : targetnumber
% 数据在sr总的存储格式为:12X256(CHIRP1) 12X256(CHIRP2) ... 12X256(CHIRP128)
noise = (randn(virtueRxannate,samplenum)+1j*randn(virtueRxannate,samplenum))/sqrt(2);
sr(: , indx : indx + samplenum-1) = sr(: , indx : indx + samplenum-1) + repmat( SNR(k) * exp(1i*2*pi*F0*taor(:,k)) ...
.* exp(1i*u*pi*taor(:,k).^2) , 1 , samplenum ) ...
.* exp(2*pi*1i*(-fd(k) + u*2*targetinfoV(k)*taor(:,k)/c + u*taor(:,k)) * t)...
+ noise;
end
end
fftdata = reshape(sr(1 , : ) , 256 , []);
fftdata = fft(fftdata);
fftdata = fft(fftdata.');
figure(h1);mesh(abs(fftdata));
pause(0.01);
end
%% ----------------------------------------------------------------
% 结束
实验结果:
推导原理: