DDM-MIMO-FMCW雷达MATLAB仿真

       本文在前期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_numtemp_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*dtfc_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));  % 收发天线相位差,仿真DOAtemp_data = temp_data + exp(1i*2*pi*(phi + k*fast_time*delay + fc_array*delay  - 1/2*k*(delay).^2));end% 叠加慢时间相位编码switch Tx_idcase 1Tx_data_1 = temp_data .* ddm_phase_value_1;case 2Tx_data_2 = temp_data .* ddm_phase_value_2;case 3Tx_data_3 = temp_data .* ddm_phase_value_3;case 4Tx_data_4 = temp_data .* ddm_phase_value_4;otherwisedisp('default');endend
%     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);        % 产生噪声,0dBRx_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-1Line = 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*Tpprintf('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.mzph.cn/bicheng/8246.shtml

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

相关文章

Gartner发布应对动荡、复杂和模糊世界的威胁形势指南:当前需要应对的12种不稳定性、不确定性、复杂和模糊的安全威胁

当今世界是动荡(Volatile)、复杂(Complex)和模糊(Ambiguous)的,随着组织追求数字化转型以及犯罪分子不断发展技术,由此产生的安全威胁也是波动性、不确定性、复杂性和模糊性的&#…

快分销商家电话采集软件使用指南

如果你是一家快分销商家,你可能会发现电话营销是一种简单而有效的方式来吸引更多的潜在客户和增加销售额。但是,寻找这些电话号码可以是一项费时费力的任务。为了帮助你简化这个过程,我们推荐使用快分销商家电话采集软件。本文将为你提供使用…

Python中DataFrame常用统计方法

目录 1.示例数据准备 2.重要参数说明 axis参数说明 skipna参数 3.常用统计方法 求和 求平均 累计求和 最小值/最大值 最小值/最大值的索引 累计最小值/最大值 累计乘积 一阶差分 非空值个数 df中等于某个值的索引 样本的分位数 方差和标准差 样本的偏度和峰度…

【LeetCode刷题记录】简单篇-108-将有序数组转换为二叉搜索树

【题目描述】 给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 平衡 二叉搜索树。 【测试用例】 示例1: 输入:nums [-10,-3,0,5,9] 输出:[0,-3,9,-10,null,5] 解释:[0,-10,5,null,…

【功耗问题排查】

一、如何处理具体功耗case 在手机功耗测试中,因为我们在功耗测试中(电源电压)为固定值(老手机一般为3.8V左右,现在的大多项目采用4V左右),那么的大小直接由决定,所以,在沟…

Consul 配置文件深入解析

Consul是一个分布式服务发现和配置共享系统,它通过一个分布式的键值存储来实现服务的注册与发现。在这篇文章中,我们将深入探讨Consul的配置文件,并通过一些最佳实践来提高其专业性和逻辑性,以吸引更多的技术读者。 配置文件概览…

webassembly入门详解(C++)

一、环境配置 环境说明,操作系统为window操作系统。 1.1 下载和安装python 下载 需要python版本至少3.6版本 python下载地址:https://www.python.org/getit/ 安装 检测安装结果 win+R组合键->cmd->输入python->回车 1.2 下载和安装emsdk 下载 下载地址:https://gi…

vs2019 - 替换vs2019自带的cmake

文章目录 vs2019 - 替换vs2019自带的cmake概述笔记启动vs2019本地x64命令行的脚本查看vs2019自带的cmake的位置删掉旧版cmake将新版cmake的安装目录内容替换过来。查看vs2019本地x64命令行中的cmake版本配置为vs2019x64工程END vs2019 - 替换vs2019自带的cmake 概述 在看一个…

Linux上,用>>重定向指定的日志,如何实现定期归档?

工作中遇到这样的问题,程序执行时,用nohup后台挂起生成的日志文件,还是用>>重定向指定的日志文件,比如这个日志文件是test1.log,改变名字为test2.log,输出信息还是会继续在test2.log上输出&#xff0…

项目启动后 数据库表结构会被自动修改 删除字段

问题还原 我这表是有warehouse_code这个字段的 然后我启动项目后,发现这个字段被删除了 解决办法 看你的配置中是否有下面的配置 把这个配置删除就行了,这配置是根据Java实体来来创建修改数据库结构的

LINUX 入门 4

LINUX 入门 4 day6 7 20240429 20240504 耗时:240min 课程链接地址 第4章 LINUX环境编程——实现线程池 C基础 第3节 #define里面的行不能乱空行,要换行就打\ typedef 是 C 和 C 中的一个关键字,用于为已有的数据类型定义一个新的名字。…

Flink面试整理-状态管理和容错机制

在 Apache Flink 中,状态管理和容错机制是实现可靠数据处理的关键特性。它们确保即使在发生故障的情况下,数据处理也能保持一致性和正确性。以下是这些机制的主要方面: 状态管理 状态类型:Flink 支持多种状态类型,如值状态(ValueState)、列表状态(ListState)、映射状态…

SpringBoot 自定义 HandlerMethodArgumentResolver 搞定xml泛型参数解析

文章目录 介绍一、解析简单 xml 数据案例引入 Jackson 的 xml 支持定义 Message 对象&MessageHeader 对象定义 Controller 方法调用结果 二、解析带泛型的 XML 数据案例2.1 直接给 Message 加上泛型 T2.2 无法直接解析泛型参数了 三、自定义 MVC 的参数解析器实现泛型参数解…

OCR文本识别模型CRNN

CRNN网络结构 论文地址:https://arxiv.org/pdf/1507.05717 参考:https://blog.csdn.net/xiaosongshine/article/details/112198145 git:https://github.com/shuyeah2356/crnn.pytorch CRNN文本识别实现端到端的不定长文本识别。 CRNN网络把包含三部分&…

两个手机在一起ip地址一样吗?两个手机是不是两个ip地址

在数字时代的浩瀚海洋中,手机已经成为我们生活中不可或缺的一部分。随着移动互联网的飞速发展,IP地址成为了连接手机与互联网的桥梁。那么,两个手机在一起IP地址一样吗?两个手机是不是两个IP地址?本文将带您一探究竟&a…

微火全域外卖系统是什么?为什么市场占有率这么高?

近日,全域外卖领域又出现了新变动,一个名为微火的品牌凭借着其全域外卖系统,在短短几个月的时间里,就占领了大部分市场。截止发稿日期前,微火全域外卖系统的市场占有率已经超过48%。 据了解,所谓的全域外卖…

微信小程序之搜索框样式(带源码)

一、效果图&#xff1a; 点击搜索框&#xff0c;“请输入搜索内容消失”&#xff0c;可输入关键字 二、代码&#xff1a; 2.1、WXML代码&#xff1a; <!--搜索框部分--><view class"search"><view class"search-btn">&#x1f50d;&l…

Fatal error: invalid -march= option: `armv7-a‘

我也是不知所措。 解决办法 参考&#xff1a; 嵌入式交叉编译&#xff1a;libvpx&#xff08;全网首发&#xff09;-CSDN博客

数据库复习2

试述SQL的特点 有两个关系 S(A,B,C, D)和 T(C,D,E,F)&#xff0c;写出与下列查询等价的 SQL 表达式: 用SQL语句建立第2章习题6中的4个表&#xff1b;针对建立的4个表用SQL完成第2章习题6中的查询 针对习题4中的4个表试用SQL完成以下各项操作 (1)找出所有供应商的姓名和所在城市…

[图解]SysML和EA建模住宅安全系统-02

1 00:00:00,900 --> 00:00:02,690 这个就是一个块定义图了 2 00:00:03,790 --> 00:00:04,780 简称BDD 3 00:00:05,610 --> 00:00:08,070 实际上就是UML里面的类图 4 00:00:08,080 --> 00:00:09,950 和组件图的一个结合体 5 00:00:13,150 --> 00:00:14,690 我…