DDM-MIMO-FMCW雷达MATLAB仿真

news2024/11/18 2:24:47

       本文在前期TDM和BPM体制的基础上,仿真DDM体制下的调制解调和信号处理测距、测速、测角流程。

        TDM和BPM相关可以看这两篇博文TDM(BPM)-MIMO-FMCW雷达仿真-CSDN博客,确定性最大似然(DML)估计测角-CSDN博客TDM(BPM)-MIMO-FMCW雷达仿真-CSDN博客,。

一、DDM原理

        DDM体制下所有发射天线同时发射,但是每个发射天线的信号都偏移一个特定的频率,通过这个人为偏移的频率使不同发射天线的信号在 Doppler 域上能分离开来。使用DDM 波形,一个目标在不同发射天线的信号辐射下所形成的回波中检测到的速度值是不同的,利用这种速度的不同,对一个目标我们可以把不同发射天线的信号在接收端分离出来。

        需要注意的是,不同发射天线上的频率偏移是通过在chirp之间(也就是慢时间上)施加不同的相位旋转而实现的,而在chirp内(也就是快时间上)信号的相位是不变的。

       如下图所示,假设总共有Nt根发射天线,那么对于发射天线k,在相邻chirp上施加的相移 由下面的公式决定

 (1)

        一般来说,公式(1)中的N由下式决定:

 (2)

        一个4发的DDM雷达系统的发射相位设置如上图所示,和TDM相比,DDM下Nt根发射天线同时发射,相比TDM能获得的分集发射增益为

 (3)

        根据公式(3),4根发射天线下DDM相比TDM能够获取大约6dB的分集发射增益,这对于提高雷达的探测距离是非常有益的。DDMA波形的缺点是由于人为地在每个发射通道上附加了频偏,导致雷达地最大不模糊速度区间(也即最大不模糊Doppler域)变小了。

        FMCW雷达的最大不模糊速度为:

 (4)

        雷达的探测速度范围是 ,其中 是chirp周期。上式指出雷达的最大不模糊速度 是由chirp周期 决定的,而Doppler公式指出目标的Doppler频率和速度间存在下面的关系:

 (5)

        结合公式(4)、(5)我们可以得到雷达的最大不模糊速度区间 所对应的Doppler频率区间 ,整个不模糊Doppler域的长度为:

 (6)

        DDM体制下,在同一根发射天线的不同chirp之间,除了累积有目标速度带来的Doppler频移外,还会累积人为施加的DDM频偏。从公式(1),相邻两根发射天线的chirp间相移差 为:

 (7)

        那么同一个目标,在相邻两根发射信号所产生的回波中Doppler频率差 为:

 (8)

        将公式(8)代入(4),(5),同一个目标,在相邻两个发射天线信号所产生的回波中检测出的速度值相差:

 (9)

        为了不混淆不同发射天线的数据,目标的最大速度不能超过 ,也就是说雷达的最大不模糊速度区间(或最大不模糊Doppler域)变为了原来的1/N。

        如下图所示,以4个发射天线为例,在没有DDM的情况下雷达的不模糊速度区间是 ,采用了DDM后,等效于将这个区间分为了长度相等的A、B、C、D这4个子区间。对同一个目标,4根发射天线的回波信号将分别落入这4个子区间,且相邻两根发射天线对应的回波信号速度值相差 的情况下,Tx1/2/3/4的回波信号将分别落入子区间C/D/A/B,此时不会产生速度模糊,我们可以按照C/D/A/B顺序依次分离出Tx1/2/3/4的数据,这就是DDM解调。但如果v超出了这个范围(下图中的case2,3,4情况),Tx1/2/3/4和子区间C/D/A/B的对应关系就会发生改变,此时用户就无法再仅仅根据子区间的位置去分离不同的发射天线数据,这便是DDM速度模糊。

二、DDM波形仿真

       按照上述DDM原理,设计4个发射天线和4个接收天线,仿真的结果如下。

1. 一维FFT

       单个目标第1个接收通道的一维FFT结果如下,可以看到距离上存在一个峰值,对应于真实的目标距离。

2.二维FFT和速度模糊

再做二维FFT,可以看到一个目标但出现了4个峰值,速度出现了模糊。

        当目标实际速度为6m/s,Tx1/2/3/4对应为C/D/A/B。

        当目标实际速度为6m/s+Vmax/2,Tx1/2/3/4对应为D/A/B/C,但仅从二维FFT频谱图上无法确定目标实际速度,需要通过速度解模糊确定各个发射通道

        另外,当目标实际速度为6m/s+2Vmax,Tx1/2/3/4对应也为C/D/A/B,但此时DDM解模糊也无法获得目标真实速度,需要后续数据处理解决

三、MATLAB代码

        这里分享上述仿真的MATLAB代码,仅供参考。

% DDM体制FMCW雷达目标回波、FFT、FFT_1D、FFT_2D仿真
clc;clear;close all;
% 雷达参数设置
radar_parameter = signal_para_set();
c = radar_parameter.c;
k = radar_parameter.K;
Tp = radar_parameter.Tp;
fs = radar_parameter.fs;
lambda = radar_parameter.lambda;
sample_num = radar_parameter.sample_num;        	% 单chirp采样点数
slow_num = radar_parameter.slow_num;                % chirp数量
R_res = c/2/radar_parameter.real_B;             % 距离分辨率
R_Max = R_res*sample_num;                       % 最远距离
V_Max = radar_parameter.lambda/4/Tp;        % 最大不模糊速度
V_res = V_Max*2/slow_num;                   % 速度分辨率
% 这里仅考虑均匀排布天线阵列
Tx_num = 4;                                     % 发射天线数
EmptyBand_num = 0;                              % 空带数量
Total_num = Tx_num + EmptyBand_num;             % 总的发射数量为实际发射天线加上空带
Rx_num = 4;                                     % 接收天线数
dRx = lambda/2;
Rx_data = zeros(Rx_num,sample_num,slow_num);
% 发射天线相位编码,理论上可用于任意根天线
ddm_phase_value_1 = kron(ones(sample_num,1),exp(1i*zeros(1,slow_num)));      % 扩展以便和矩阵相乘
ddm_phase_value_2 = kron(ones(sample_num,1),exp(1i*2*pi*(0:slow_num-1)/Total_num));
ddm_phase_value_3 = kron(ones(sample_num,1),exp(1i*4*pi*(0:slow_num-1)/Total_num));
ddm_phase_value_4 = kron(ones(sample_num,1),exp(1i*6*pi*(0:slow_num-1)/Total_num));
% 目标参数
tar_inf = [55 6 0];          % 仿真目标距离,速度,角度
% tar_inf = [15 1 10;
%            18 -5 0;
%            70.8 20 0;
%            90.3 -15 20;
%            105 10 -30;];          % 仿真目标距离,速度,角度
% 接收通道数据
for Rx_id = 1:Rx_num
    % 每根发射天线的数据
    ADC_data = zeros(sample_num,slow_num);
    Tx_data_1 = ADC_data;
    Tx_data_2 = ADC_data;
    Tx_data_3 = ADC_data;
    Tx_data_4 = ADC_data;
    for Tx_id = 1:Tx_num
        temp_data = zeros(sample_num,slow_num);
        % 叠加所有目标
        for temp_tar = 1:size(tar_inf,1)
            % slow_time = (Tx_id - 1 + Tx_num*(0:slow_num-1))*Tp;                   % TDM模式下时序
            slow_time = (0:slow_num-1)*Tp;                                          % 这里和TDM不同
            tar_pos = tar_inf(temp_tar,1) + tar_inf(temp_tar,2)*slow_time;          % 生成波形,距离R=R0+v*dt
            fc_array = radar_parameter.fc*ones(sample_num,1);
            fast_time = ((0:sample_num-1)/fs)';
            delay = 2*tar_pos/c;
            phi = ((Tx_id-1)*Rx_num+Rx_id)*dRx/lambda * sind(tar_inf(temp_tar,3));  % 收发天线相位差,仿真DOA
            temp_data = temp_data + exp(1i*2*pi*(phi + k*fast_time*delay + fc_array*delay  - 1/2*k*(delay).^2));
        end
        % 叠加慢时间相位编码
        switch Tx_id
            case 1
                Tx_data_1 = temp_data .* ddm_phase_value_1;
            case 2
                Tx_data_2 = temp_data .* ddm_phase_value_2;
            case 3
                Tx_data_3 = temp_data .* ddm_phase_value_3;
            case 4
                Tx_data_4 = temp_data .* ddm_phase_value_4;
            otherwise
                disp('default');
        end
    end
%     ADC_data = Tx_data_3;             % 单根天线发射用于测试
    ADC_data = Tx_data_1 + Tx_data_2 + Tx_data_3 + Tx_data_4; % 所有天线发射
    ADC_data = awgn(ADC_data,0);        % 产生噪声,0dB
    Rx_data(Rx_id,:,:) = ADC_data;
end
% 显示解调前的数据,包括时域和二维FFT数据
V_label = (-V_Max:V_res:(V_Max-V_res));
R_label = R_res*(1:sample_num);
[XX,YY] = meshgrid(V_label,R_label);
% 选取第1接收通道显示
Rx_id = 1;
temp_data = squeeze(Rx_data(Rx_id,:,:));
FFT_1D = fft(temp_data,sample_num,1);
FFT_2D = abs((fftshift(fft(FFT_1D,[],2),2)));
figure;mesh(XX,YY,db(abs(FFT_1D)));colorbar;title('第1通道一维FFT');xlabel('speed(m/s)');ylabel('range/m');zlabel('power(dB)');grid on;
figure;mesh(XX,YY,db(FFT_2D));colorbar;title('第1通道二维FFT');xlabel('speed(m/s)');ylabel('range/m');zlabel('power(dB)');grid on;
% figure;imagesc(V_label,R_label,db(FFT_2D));colorbar;title('第1单通道二维FFT');xlabel('speed(m/s)');ylabel('range/m');zlabel('power(dB)');
Image_fft = db(FFT_2D);             % 将最大不模糊速度根据发射天线数划分
V_label_len = length(V_label);      % 速度范围的chirp数,根据划分定位各通道分界线
for i = 1:Total_num-1
    Line = round(V_label_len/Total_num)*i;
    Image_fft(:,Line) = 0;
end
figure;imagesc(V_label,R_label,Image_fft);colorbar;title('第1单通道二维FFT');xlabel('speed(m/s)');ylabel('range/m');zlabel('power(dB)');

        波形配置参数文件如下。

% 设置雷达信号的参数,返回配置参数
function [radar_parameter] = signal_para_set()
sample_num = 384;               % 单chirp采样点数
slow_num = 512;                 % chirp数量
c = 3e8;                        % 光速
fc = 76e9;                      % 起始频率
K  = 30e12;                     % 调频斜率
Tp = 20e-6;                     % 单chirp时长
B = K*Tp;                       % 总调频带宽
fs = 30e6;                      % 中频采样频率
ts = 1/fs;                      % 采样时间间隔
Ts = ts*sample_num;             % 采样时间,Ts应当小于Tp
real_B = Ts*K;                  % 实际带宽
lambda = c/(fc+real_B/2);       % 中心频率计算波长
if Ts > 0.8*Tp
    printf('para has problem!');
end
% 结构体参数设置
radar_parameter.c = c;
radar_parameter.Tp = Tp;
radar_parameter.fc = fc;
radar_parameter.K = K;
radar_parameter.fs = fs;
radar_parameter.ts = ts;
radar_parameter.lambda = lambda;
radar_parameter.sample_num = sample_num;
radar_parameter.slow_num = slow_num;
radar_parameter.real_B = real_B;
end

参考资料

《基于AWR2944的汽车雷达DDMA波形的原理和实现》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1664377.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2023年全国职业院校技能大赛(高职组)“云计算应用”赛项赛卷3(私有云)

#需要资源(软件包及镜像)或有问题的,可私聊博主!!! #需要资源(软件包及镜像)或有问题的,可私聊博主!!! #需要资源(软件包…

Python中tkinter编程入门3

在使用tkinter创建了窗口之后,可以将一些控件“放置”到窗口中。这些控件包括标签、按键以及输入框等。 1 在窗口中“放置”标签 在窗口中“放置”标签主要有两个步骤,一是创建标签控件,二是将创建好的标签“放置”到窗口上。 1.1 创建标签…

[数据集][目标检测]管道焊缝质量检测数据集VOC+YOLO格式1134张2类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):1134 标注数量(xml文件个数):1134 标注数量(txt文件个数):1134 标注…

【pandas】库中的apply(lambda function ,arix)

pandas.apply() 遍历DataFrame的元素(一行或者一列数据) 行遍历:axis 1 列遍历:axis 0 基础信息 pandas的apply()方法是用来调用一个lambda函数,让函数对数据对象具有批处理的特性。 pandas支持apply()调用…

钉钉群定时发送消息1.0软件【附源码】

内容目录 一、详细介绍二、效果展示1.部分代码2.效果图展示 三、学习资料下载 一、详细介绍 有时候需要在钉钉群里提醒一些消息。要通知的群成员又不方便用定时钉的功能,所以写了这么一个每日定时推送群消息的工具。 易语言程序,附上源码与模块&#x…

cubic 相比 bbr 并非很糟糕

迷信 bbr 的人是被它的大吞吐所迷惑,我也不想再解释,但我得反过来说一下 cubic 并非那么糟。 想搞大吞吐的,看看我这个 pixie 算法:https://github.com/marywangran/pixie,就着它的思路改就是了。 cubic 属于 aimd-ba…

最新ChatGPT中文系统网站源码+系统部署+支持AI对话、AI绘画、AI音乐等大模型

一、系统介绍 本文将介绍最新的ChatGPT中文版AI创作系统——星河易创AI系统,该系统基于ChatGPT的核心技术,融合了自然语言问答、绘画、音乐等创作功能,并兼容官方GPT全模型。该系统提供多样化的应用,包括GPTs的多场景应用、实时G…

Python快速入门-零基础也能掌握的编程技巧,基础方法和API整理

目录 前言 数据结构 数字 数学运算 随机数 字符串 列表 元组 字典 面向对象 JSON 文件操作 扩展 制作一个简易时钟 前言 环境什么就不在赘述,可以参考其他文章,也可以在线运行 CSDN在线运行地址:InsCode - 让你的灵感立刻落地…

n5.树(中)

1、二叉树的遍历 1.1先序、中序、后序遍历 先序遍历 根->左->右 先序遍历先访问根节点,再访问它的左子树,然后访问它的右子树。对于每次访问到的结点,都要递归地访问左子树、后右子树———递归。 创建 typedef struct TreeNode*…

理解导数(x^n求导后nx^n-1)

以下都是为了方便理解 微小量是 t M(x)是一个函数 M 在 x 处的斜率 M 在 x 处的导数 垂直距离 平移距离 M ( x t ) − M ( x ) ( x t ) − x M在x处的斜率 M在x处的导数 \dfrac{垂直距离}{平移距离} \dfrac{M\left( xt\right) -M\left( x\right) }{(x t) -x} M在x处的斜…

Tiff文件解析和PackBits解压缩

实现了Tiff图片文件格式的解析,对Tiff文件中的PackBits压缩格式进行解压缩,对Tiff文件中每一个Frame转换成BufferedImage显示。 Java语言实现,Eclipse下开发,AWT显示图片。 public static TIFF Parse(final byte[] bytes) throw…

618洗地机推荐,市面上各式各样的洗地机怎么选?这里有答案

洗地机的出现极大地改变了清洁方式,通过结合扫地、拖地、吸尘等多种功能,实现了一机多用的便捷清洁体验。而且洗地机不需要弯腰,每次也不用清洁很长时间,节省出来的时间可以更好的休息,但是市面上各式各样的洗地机怎么…

突破编程界限:探索AI编程新境界

文章目录 一、AI编程助手1.1 Baidu Comate智能代码助手1.2 阿里云 通义灵码 二、场景需求三、体验步骤3.1 官网下载3.2 手动下载 四、试用感受4.1 提示4.2 注释生成代码4.3 代码生成4.4 选中生成注释4.5 查看变更&新建文件4.6 调优建议4.7 插件使用 五、结尾推荐 一、AI编程…

代码审计-php篇之某CRM系统多处sql注入

🌟 ❤️ 作者:yueji0j1anke 首发于公号:剑客古月的安全屋 字数:3516 阅读时间: 35min 声明:请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果…

Python爬虫 【1】 —— 爬虫基础

爬虫基本套路 基本流程 目标数据来源地址结构分析 具体数据在哪(网站 还是APP)如何展示的数据、 实现构思操刀编码 基本手段 破解请求限制 请求头设置,如:useragent为有效客户端控制请求频率(根据实际情境&#xff09…

在Linux上安装并运行RabbitMQ

目录 准备CentOS服务器 下载rabbit-server和erlang文件 启动RabbitMQ服务 准备CentOS服务器 两个命令,选一个能用的,查看CentOS服务器的版本 lsb_release -a下载rabbit-server和erlang文件 参考文章:http://t.csdnimg.cn/t8BbM 1、创建新…

龟兔赛跑(基于GUI与多线程实现)

直击龟兔赛跑现场 下面这张图是我们设计龟兔赛跑界面的初始效果与基本组成结构: 接下来是我仅代表我个人提出的一些疑问与解答: 1、俩动物以图片的形式显示? 其实在这里两个动物类就像标签一样 标签组件是什么?用于短文本字符串…

对话易参创始人黄怡然:股权能不能赋能企业增长?| 极新企服直播实录

“ 致所有爱画饼的老板 ” 整理 | 云舒 编辑 | 小白 出品|极新 2022年以前,股权激励作为企业实现增长、吸引人才、保留人才并大幅度激发人才价值的重要手段,几乎成为每一个企业的标配。但是,现在这个时代,股权激励几…

2024年最新方法下载钉钉群直播回放

链接:百度网盘 请输入提取码 提取码:1234 --来自百度网盘超级会员V10的分享 1.首先解压好所有的压缩包,这个压缩包里面还套着一共逍遥一仙下载器压缩包,也解压 2.进入逍遥一仙下载器文件夹,打开M3U8 V1.4.8 0508.e…

ESP32-C3-MINI-1

https://www.espressif.com.cn/sites/default/files/documentation/esp32-c3-mini-1_datasheet_cn.pdf 芯片 https://files.seeedstudio.com/wiki/XIAO_WiFi/Resources/esp32-c3_datasheet.pdf 结果参考: https://blog.csdn.net/iamxxdd/article/details/12386419…