DDMA信号处理以及数据处理的流程---原始数据生成

Hello,大家好,我是Xiaojie,好久不见,欢迎大家能够和Xiaojie一起学习毫米波雷达知识,Xiaojie准备连载一个系列的文章—DDMA信号处理以及数据处理的流程,本系列文章将从目标生成、信号仿真、测距、测速、cfar检测、测角、目标聚类、目标跟踪这几个模块逐步介绍,这个系列的文章大约是一个7-8篇左右。

最终效果如下:

整体文件的目录树如下:

本篇文章主要讲的是原始数据生成的部分。

基本理论

FMCW雷达基本结构

下图为FMCW雷达基本结构,时序器和本地振荡器产生线性调频信号,调相器进行相位调制,功率放大器增强信号功率,最后由发射天线向外界传播。当信号在外界传输过程中遇到目标后会被反射,反射信号会被接收天线接收,通过低噪声放大器,与发射信号进行混频得到中频信号。中频信号包含目标的距离和速度信息。中频信号通过低通滤波器,经过模数转换后数据就可以用于提取目标信息

发射信号chirp序列

下图为发射chirp发射信号和接收信号序列

单个chirp发射信号表达式为:

S T ( t ) = A T e j [ 2 π ( f c t + 1 2 S t 2 ) ] S_T(t)=A_Te^{j[2\pi(f_ct+\frac{1}{2}St^2)]} ST(t)=ATej[2π(fct+21St2)]

当发射信号遇到目标后,会被反射,形成回波信号,回波信号的表达式为:

S R ( t ) = A R e j 2 π [ ( f c + f d ) ( t − t d ) + 1 2 S ( t − t d ) 2 ] S_R(t)=A_Re^{j{2\pi[(f_c+f_d)(t-t_d)+\frac{1}{2}S(t-t_d)^2]}} SR(t)=ARej2π[(fc+fd)(ttd)+21S(ttd)2]

接收到目标的回波信号与发射信号进行混频得到中频信号,其表达式为:

S I F = A I F e j 2 π [ ( S t d − f d ) t + ( f c + f d ) t d − 1 2 S t d 2 ] S_{IF}=A_{IF}e^{j{2\pi[(St_d-f_d)t+(f_c+f_d)t_d-\frac{1}{2}St_d^2]}} SIF=AIFej2π[(Stdfd)t+(fc+fd)td21Std2]

距离、速度、角度

距离公式:

t d = 2 R c t_d = \frac{2R}{c} td=c2R

速度公式:

f d = 2 v λ f_d = \frac{2v}{\lambda} fd=λ2v

角度公式:

Δ ϕ = 2 π λ d s i n ( θ ) \Delta\phi= \frac{2\pi}{\lambda}dsin(\theta) Δϕ=λ2πdsin(θ)

仿真

雷达参数

基本参数

下表为仿真雷达的基本参数

阵列排布

阵列排布采用均匀阵列,暂不考虑俯仰角测量

仿真代码

generateParameter.m文件

generateParameter.m文件主要是一些雷达参数的宏定义,定义一些雷达的相关变量值;具体代码如下:

% 参数设置
function parameter = generateParameter()parameter.frameNumLoops = 18; %初始化frame循环parameter.frameCount = 0; %帧计数parameter.targetNums = 1; %初始化真实目标parameter.c = 3e8; %光速parameter.frameNums = 70; %帧数parameter.frameTime = 60e-3; %帧周期parameter.startFreq = 76.2e9;  %起始频率parameter.Fs = 18.75e6; %采样率 实采样率37.5MHz的采样率  复采样率为18.75MHz的采样率parameter.tr = 1 / parameter.Fs; %采样间隔parameter.Slope = 20e12; %chirp斜率parameter.Samples = 512;  %采样点parameter.rangeBin = 512; %rangebinparameter.Chirps = 384;  %chirp数parameter.dopplerBin = 384; %dopplerbinparameter.dopplerBinHalf = parameter.dopplerBin / 2; %多普勒bin的一半parameter.TrValid = parameter.Samples / parameter.Fs; %采样有效时间parameter.TrTotal = 38e-6;  %chirp周期parameter.t = 0:parameter.tr:parameter.TrValid - parameter.tr; %chirp时间下标parameter.validBandWidth = parameter.Slope * parameter.TrValid; %有效带宽parameter.totalBandWidth = parameter.Slope * parameter.TrTotal; %总带宽parameter.centerFreq = parameter.startFreq + parameter.validBandWidth / 2; %中心频率parameter.lambda = parameter.c / parameter.centerFreq; %波长parameter.txAntenna = [0 4 8 12]; %发射天线 暂不考俯仰 2944的方位发射天线parameter.rxAntenna = [0 1 2 3]; %接收天线 2944的方位接收天线parameter.txNum = length(parameter.txAntenna); %发射天线的数量parameter.rxNum = length(parameter.rxAntenna); %接收天线的数量parameter.dx = parameter.lambda / 2; %虚拟天线的方位最小间距parameter.subBand = 6; %子带数parameter.emptyBand = 2; %空子带数parameter.validBand = parameter.txNum; %有效子带为发射天线数量parameter.subDopplerBin = parameter.dopplerBin / parameter.subBand; %一个子带dopplerbin的数目parameter.subBandRelation = [0, 1, 2, 3] * parameter.subDopplerBin; %子带间的关系parameter.phaseShift = mod(2*pi .* (1:1:parameter.Chirps).' .* (0:1:parameter.txNum-1) ./ parameter.subBand, 2*pi); %chirp信号的相移值end

generateSignal.m文件

generateSignal.m文件主要目的是生成雷达的原始数据,生成一个维度为 r x N u m s ∗ c h i r p N u m s ∗ s a m p l e s rxNums*chirpNums*samples rxNumschirpNumssamples的矩阵;

具体代码如下:

function rawData = generateSignal(Parameter,target)c = Parameter.c; %光速TrTotal = Parameter.TrTotal;  %脉冲重复周期samples = Parameter.Samples; %采样点chirps = Parameter.Chirps;  %chirp数slope = Parameter.Slope; %chirp斜率startFreq = Parameter.startFreq; %起始频率deltaFreq = Parameter.deltaFreq; %步进频率lambda = Parameter.lambda; %波长txAntenna = Parameter.txAntenna; %发射天线的位置rxAntenna = Parameter.rxAntenna; %接收天线的位置txNum = Parameter.txNum; %发射天线数rxNum = Parameter.rxNum; %接收天线数dx = Parameter.dx; %水平间距targetNum = size(target,1); %目标数t = Parameter.t; %时间序列phaseShift = Parameter.phaseShift; %移相值rawData = zeros(rxNum,chirps,samples);for rxId = 1:rxNum %接收天线循环rxPos = rxAntenna(rxId); %每根接收天线的位置for chirpId = 1:chirps %chirp数目循环Sif = zeros(1,samples);centerFreq = startFreq + (chirpId - 1) * deltaFreq;for txId = 1:txNum %发射天线循环txPos = txAntenna(txId); %每跟发射天线的位置virtualAntennaPos = rxPos + txPos; %虚拟天线位置phaseValue = phaseShift(chirpId,txId); %DDMA移相位值St = exp((1i*2*pi) * (centerFreq * (t + chirpId * TrTotal) + slope / 2 * t.^2) + 1i * phaseValue); %发射信号for targetId = 1:targetNum %目标数目循环targetRange = target(targetId,1); targetSpeed = target(targetId,2); targetAngle = target(targetId,3); %目标信息tau = 2 * targetRange / c; %距离信息fd = 2 * targetSpeed / lambda; %频移信息wx = 2 * pi * virtualAntennaPos / lambda * dx * sind(targetAngle); %天线相位信息Sr = exp((1i*2*pi) * ((centerFreq-fd) * (t - tau + chirpId * TrTotal) + slope / 2 * (t-tau).^2) - 1i * wx);  %回波信号
%                     Sr = exp((1i*2*pi) * ((centerFreq-fd) * (t - tau + chirpId * TrTotal) + slope / 2 * (t-tau).^2));  %回波信号Sif = Sif + St .* conj(Sr);endendrawData(rxId,chirpId,:) = Sif;endrawData(rxId,:,:) = awgn(rawData(rxId,:,:),0); %添加噪声end
end

运行结果如下:

参考文献

  1. Xiaojie雷达之路—TDM-MIMO及雷达处理流程仿真

至此,本片文章就此结束了。

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

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

相关文章

LLVM 后端执行流程

异构计算程序工作流程 图4-1中的LLVM后端的主要功能是代码生成,其中包括若干指令生成分析转换pass,将LLVM IR 转换为特定目标架构的机器代码 LLVM 流水线结构 输入指令经过图4-2中的各个阶段,从最初的LLVM IR,逐步演化为Selectio…

管理数据必备;侦听器watch用法详解,vue2与vue3中watch的变化与差异

目录 一、侦听器(watch)是什么? 二、Vue2中的watch(Options API) 2.1、函数式写法 2.2、对象式写法 ①对象式基础写法 ②回调函数handler ③deep属性 ④immediate属性 三、Vue3中的watch 3.1、向下兼容&#xff…

两句话让LLM逻辑推理瞬间崩溃!!

一道简单的逻辑问题,竟让几乎所有的LLM全军覆没? 对于人类来说,这个名为「爱丽丝梦游仙境」(AIW)的测试并不算很难—— 「爱丽丝有N个兄弟,她还有M个姐妹。爱丽丝的兄弟有多少个姐妹?」 稍加思考…

LeetCode1143最长公共子序列

题目描述 给定两个字符串 text1 和 text2,返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 ,返回 0 。一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符&#xff08…

redis windos修复版本

遇到的问题: Django的channel插件连接安装在windows上的redis报错: unknown command BZPOPMIN, channels-redis版本和redis不兼容导致.解决方案: 更新Redis版本. 微软官方维护的 Redishttps://github.com/microsoftarchive/redis/releases 2016年后就不更新了, 版本停留在了3.x…

学生信息管理(C语言)

学生信息管理 (1)问题描述 学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等。试设计一学生信息管理系统,使之能提供以下功能: 系统以菜单方式工作学生信息录入功能(学生信息用文件保存)---输入学生信息浏览功能---输出查询、排序功能---算法1、…

前后端实现文件上传进度条-实时进度

后端接口代码&#xff1a; PostMapping("/upload")public ResponseEntity<String> handleFileUpload(RequestParam("file") MultipartFile file) {try {// 获取文件名String fileName file.getOriginalFilename();// 创建上传目标路径Path targetPa…

CentOS7 MySQL5.7.35主从 不停机搭建 以及配置

如需安装MySQL&#xff0c;参照MySQL 5.7.35 安装教程 https://blog.csdn.net/CsethCRM/article/details/119418841一、主&从 环境信息准备 1.1.查看硬盘信息&#xff0c;确保磁盘够用&#xff08;主&从&#xff09; df -h1.2.查看内存信息 &#xff08;主&从&am…

C++ 贪心算法——跳跃游戏、划分字母区间

一&#xff1a;跳跃游戏 55. 跳跃游戏 题目描述&#xff1a;给你一个非负整数数组 nums &#xff0c;你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个下标&#xff0c;如果可以&#xff0c;返回 true &#xff1…

解决阿里云的端口添加安全组仍然无法扫描到

发现用线上的网站扫不到这个端口&#xff0c;这个端口关了&#xff0c;但是没有更详细信息了 我用nmap扫了一下我的这个端口&#xff0c;发现主机是活跃的&#xff0c;但是有防火墙&#xff0c;我们列出云服务器上面的这个防火墙list&#xff0c;发现确实没有5566端口 参考&a…

Mac环境下,简单反编译APK

一、下载jadx包 https://github.com/skylot/jadx/releases/tag/v1.4.7 下载里面的这个&#xff1a;下载后&#xff0c;找个干净的目录解压&#xff0c;我是放在Downloads下面 二、安装及启动 下载和解压 jadx&#xff1a; 下载 jadx-1.4.7.zip 压缩包。将其解压到你希望的目…

内网安全--隧道技术代理技术

注:本文仅做技术交流,请勿非法破坏... 目录 项目: 1-Ngrok 用法 2-Frp 用法 3-Nps 用法 4-Spp 用法 工具: windows下: Proxifier(推荐~) Sockscap ccproxy Linux下: Proxychains 用法 http://t.csdnimg.cn/88Ew7 隧道技术&#xff1a;解决不出网协议上线的问…

**《Linux/Unix系统编程手册》读书笔记24章**

D 24章 进程的创建 425 24.1 fork()、exit()、wait()以及execve()的简介 425 . 系统调用fork()允许父进程创建子进程 . 库函数exit(status)终止进程&#xff0c;将进程占用的所有资源归还内核&#xff0c;交其进行再次分配。库函数exit()位于系统调用_exit()之上。在调用fo…

“RabbitMQ入门指南:从入门到起飞,这一篇就够!打造高效消息通信系统的第一步“。

1.前言 RabbitMQ是一个开源的消息代理软件&#xff0c;它实现了高级消息队列协议&#xff08;AMQP&#xff09;的标准&#xff0c;并用Erlang语言编写。作为消息代理&#xff0c;RabbitMQ接收、存储和转发消息&#xff0c;帮助应用程序之间实现异步通信。它提供了一个强大而灵活…

Qt开发技术:Q3D图表开发笔记(四):Q3DSurface三维曲面图颜色样式详解、Demo以及代码详解

若该文为原创文章&#xff0c;转载请注明原文出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/139424086 各位读者&#xff0c;知识无穷而人力有穷&#xff0c;要么改需求&#xff0c;要么找专业人士&#xff0c;要么自己研究 红胖子网络科技博…

PawSQL优化 | 分页查询太慢?别忘了投影下推

​在进行数据库应用开发中&#xff0c;分页查询是一项非常常见而又至关重要的任务。但你是否曾因为需要获取总记录数的性能而感到头疼&#xff1f;现在&#xff0c;让PawSQL的投影下推优化来帮你轻松解决这一问题&#xff01;本文以TPCH的Q12为案例进行验证&#xff0c;经过Paw…

Redisson分布式锁原理解析

前言 首先Redis执行命令是单线程的&#xff0c;所以可以利用Redis实现分布式锁&#xff0c;而对于Redis单线程的问题&#xff0c;是其线程模型的问题&#xff0c;本篇重点是对目前流行的工具Redisson怎么去实现的分布式锁进行深入理解&#xff1b;开始之前&#xff0c;我们可以…

Vmess协议是什么意思? VLESS与VMess有什么区别?

VMess 是一个基于 TCP 的加密传输协议&#xff0c;所有数据使用 TCP 传输&#xff0c;是由 V2Ray 原创并使用于 V2Ray 的加密传输协议&#xff0c;它分为入站和出站两部分&#xff0c;其作用是帮助客户端跟服务器之间建立通信。在 V2Ray 上客户端与服务器的通信主要是通过 VMes…

ThinkPHP发邮件配置教程?群发功能安全吗?

ThinkPHP发邮件的注意事项&#xff1f;如何优化邮件发送的性能&#xff1f; 无论是用户注册、密码重置还是消息提醒&#xff0c;发送邮件都是一个常见的需求。AokSend将详细介绍如何在ThinkPHP框架中配置和发送邮件&#xff0c;帮助开发者轻松实现邮件功能。 ThinkPHP发邮件&…

43【PS 作图】颜色速途

1 通过PS让画面细节模糊&#xff0c;避免被过多的颜色干扰 2 分析画面的颜色 3 作图 参考网站&#xff1a; 色感不好要怎么提升呢&#xff1f;分享一下我是怎么练习色感的&#xff01;_哔哩哔哩_bilibili https://www.bilibili.com/video/BV1h1421Z76p/?spm_id_from333.1007.…