【3期】(修改版)FMCW DDMA-MIMO 雷达波形MATLAB仿真

作品简介

仿真环境:MATLAB2022a

操作系统: Windos10

4T4R,2个空带,R=30m,V=0m/s,snr=20dB的仿真距离速度谱效果:

T4R,2个空带R1=30m,V1=0m/s,R2=50m,V2=10m/s,R3=100m,V3=20m/s,SNR=20dB的仿真距离速度谱效果:

12T16R,4个空带R1=30m,V1=0m/s,R2=50m,V2=10m/s,R3=100m,V3=20m/s,SNR=20dB的仿真距离速度谱效果:

关键代码解析

主程序RSP.m,包含了雷达参数、目标参数、DDMA-MIMO信号建模、距离维FFT和速度维FFT。

%% 公众号 :调皮连续波
%% 时间:20230511日
clc;
clear all;
close all;


%% 雷达参数设置
parameter  = generateParameter();
%% 雷达回波信号建模
rawData    = generateSignal(parameter);
firstChirp = rawData(1,:,1);


%% 雷达信号处理
rangeRes     = parameter.c / (2 * parameter.BandwidthValid); %距离分辨率 有效带宽
rangeIndex   = (0:parameter.rangeBin-1) * rangeRes;
speedRes     = parameter.lambda / (2 * parameter.dopplerBin * parameter.Tr);
dopplerIndex = (-parameter.dopplerBin/2:1:parameter.dopplerBin/2 - 1) * speedRes;
angleRes     = parameter.lambda / (parameter.virtualAntenna * parameter.dx) * 180 / pi;
angleIndex   = (-parameter.virtualAntenna/2:1:parameter.virtualAntenna/2 - 1) * angleRes;


%%1D FFT
fft1dData    = fft(firstChirp);
figure(3);
plot(db(abs(fft1dData)./max(abs(fft1dData))));
xlabel('距离(m)'); ylabel('幅值(dB)');title('距离维FFT');


%% 2D FFT
%% 距离-多普勒谱
channelNum    = size(rawData,1);
rangebinNum   = size(rawData,2);
dopplerbinNum = size(rawData,3);
fft2dDataPower= zeros(size(rawData));
fft2dDataDB   = zeros(size(rawData));
fftRADataPower= zeros(size(rawData));


for chanId = 1:1:channelNum
    fft2dDataPower(chanId,:,:) = RDfftMatrix(rawData(chanId,:,:));
end


figure(4);
imagesc(dopplerIndex',rangeIndex,db(abs(squeeze(fft2dDataPower(2,:,:)))));
axis xy
view(2);
xlabel('速度(m/s)'); ylabel('距离(m)'); zlabel('幅值');
title('DDMA-MIMO(RD谱)')

DDMA信号建模,首先按照不同Chirp和发射通道生成相位值,然后让所有发射通道的信号叠加,最后根据目标参数获得回波信号,然后混频得到中频信号,叠加噪声。

空带Empty_Band设置如下:

Empty_band  =4;%空带数目

相位和发射信号模型如下:

phi_offset = (chirpId-1)*(txId-1)*2*pi/(txNum+Empty_band);
St1 = 10*exp(1j*2*pi*(centerFreq*(t+(chirpId-1)*Tr)+slope/2*t.^2)+1j*phi_offset); %发射信号

好了,总的来说DDMA-MIMO仿真并不是那么难,感兴趣的朋友可以试试,

创作时间:2023-08-12 17:43:46