DDMA信号处理以及数据处理的流程---随机目标生成

2024-06-09 23:44

本文主要是介绍DDMA信号处理以及数据处理的流程---随机目标生成,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

最终效果如下:

整体文件的目录树如下:

本篇文章主要讲的是目标生成的部分。

目标生成部分主要是在targetGenerate目录下实现,按隔随机帧数来生成目标的随机距离、随机速度、随机角度以及随机横向距离。

generateRandFrame.m介绍

generateRandFrame.m文件主要目的是生成随机的帧数,目的是隔多少帧来生成一个新的目标。在下面代码中会在[18,23]中生成一个随机数。

%% 获取随机帧数,表征隔几帧生成一个新目标
function frame = generateRandFrame()frameMin = 18; %最小帧号frameMax = 23; %最大帧号%生成随机帧号,范围为[frameMin,frameMax]frame = round(rand(1,1)*(frameMax-frameMin))+frameMin; 
end

generateNewTarget.m介绍

generateNewTarget.m文件主要目的是生成一个新的目标,包括是在目标的径向距离、径向速度、角度、横向距离。目标的横向距离 t a r g e t L o targetLo targetLo范围在 [ − 10 , 10 ] [-10,10] [10,10]中,目标的径向速度 s p e e d I n i t speedInit speedInit范围在 [ − 25 , 25 ] [-25,25] [25,25]中,目标的径向距离是和径向速度是相关的,当径向速度小于0时,目标径向距离为 125 125 125,当径向速度大于0时,目标径向距离为 2 + a b s ( t a r g e t L o ) 2+abs(targetLo) 2+abs(targetLo),目标角度计算为 a n g l e I n i t = a s i n d ( t a r g e t L o / r a n g e I n i t ) angleInit = asind(targetLo/rangeInit) angleInit=asind(targetLo/rangeInit),最终一个新的目标为 t a r g e t = [ r a n g e I n i t , s p e e d I n i t , a n g l e I n i t , t a r g e t L o ] ; target = [rangeInit, speedInit, angleInit, targetLo]; target=[rangeInit,speedInit,angleInit,targetLo];

%% 产生一个新的目标
function target = generateNewTarget()loMin = -10; %横距的最小值loMax = 10; %横距的最大值%随机生成目标的横距,范围为[loMin,loMax]targetLo = round(rand(1,1)*(loMax-loMin))-loMax; speedInit = 0; % 目标速度初始化为0speedMax = 25; % 目标速度的最大值speedMin = -25; % 目标速度的最小值% 随机生成目标的速度,范围为[speedMin,speedMax]while (speedInit == 0)speedInit = round(rand(1,1)*(speedMax-speedMin))-speedMax;endif speedInit < 0 %目标速度的小于0,目标从远靠近rangeInit = 125;elserangeInit = 2 + abs(targetLo); %目标从近到远endangleInit = asind(targetLo/rangeInit); %目标角度初始化target = [rangeInit, speedInit, angleInit, targetLo]; %目标信息生成
end

targetUpdate.m介绍

随着帧数的变化,目标的径向速度以及角度会发生变化(假设目标的径向速度不变),targetUpdate.m文件主要目的是对生成目标的径向距离以及角度进行更新。

%% 目标信息更新
function target = targetUpdate(parameter,target)for targetIdx = 1:1:parameter.targetNumstargetRange = target(targetIdx,1); %目标的距离targetSpeed = target(targetIdx,2); %目标的速度targetLo = target(targetIdx,4); %目标的横距targetRange = targetRange + targetSpeed * parameter.frameTime; %目标距离计算targetAngle = asind(targetLo/targetRange); %目标角度计算target(targetIdx,1) = targetRange; %距离更新target(targetIdx,2) = targetSpeed; %速度更新target(targetIdx,3) = targetAngle; %角度更新endend

generateMovingTarget.m介绍

generateMovingTarget.m是生成移动的目标,当frameNumLoops为0时,会生成新的目标且目标列表更新并生成下次目标生成的随机帧号;且每帧都会进行目标信息更新

%% 生成动态目标
function [parameter,target] = generateMovingTarget(parameter,target)parameter.frameNumLoops = parameter.frameNumLoops - 1; %frameNumLoops% 如果frameNumLoops为0,则生成新的目标if parameter.frameNumLoops == 0newTarget = generateNewTarget(); % 生成新目标parameter.targetNums = parameter.targetNums + 1; %目标数增加target = [target ; newTarget]; %target更新parameter.frameNumLoops = generateRandFrame(); %生成随机帧号endtarget = targetUpdate(parameter,target); %目标信息更新end

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

这篇关于DDMA信号处理以及数据处理的流程---随机目标生成的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


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

相关文章

python生成随机唯一id的几种实现方法

《python生成随机唯一id的几种实现方法》在Python中生成随机唯一ID有多种方法,根据不同的需求场景可以选择最适合的方案,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习... 目录方法 1:使用 UUID 模块(推荐)方法 2:使用 Secrets 模块(安全敏感场景)方法

Ubuntu 24.04启用root图形登录的操作流程

《Ubuntu24.04启用root图形登录的操作流程》Ubuntu默认禁用root账户的图形与SSH登录,这是为了安全,但在某些场景你可能需要直接用root登录GNOME桌面,本文以Ubuntu2... 目录一、前言二、准备工作三、设置 root 密码四、启用图形界面 root 登录1. 修改 GDM 配

Spring Security中用户名和密码的验证完整流程

《SpringSecurity中用户名和密码的验证完整流程》本文给大家介绍SpringSecurity中用户名和密码的验证完整流程,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定... 首先创建了一个UsernamePasswordAuthenticationTChina编程oken对象,这是S

Android ViewBinding使用流程

《AndroidViewBinding使用流程》AndroidViewBinding是Jetpack组件,替代findViewById,提供类型安全、空安全和编译时检查,代码简洁且性能优化,相比Da... 目录一、核心概念二、ViewBinding优点三、使用流程1. 启用 ViewBinding (模块级

SpringBoot整合Flowable实现工作流的详细流程

《SpringBoot整合Flowable实现工作流的详细流程》Flowable是一个使用Java编写的轻量级业务流程引擎,Flowable流程引擎可用于部署BPMN2.0流程定义,创建这些流程定义的... 目录1、流程引擎介绍2、创建项目3、画流程图4、开发接口4.1 Java 类梳理4.2 查看流程图4

java Long 与long之间的转换流程

《javaLong与long之间的转换流程》Long类提供了一些方法,用于在long和其他数据类型(如String)之间进行转换,本文将详细介绍如何在Java中实现Long和long之间的转换,感... 目录概述流程步骤1:将long转换为Long对象步骤2:将Longhttp://www.cppcns.c

从基础到进阶详解Pandas时间数据处理指南

《从基础到进阶详解Pandas时间数据处理指南》Pandas构建了完整的时间数据处理生态,核心由四个基础类构成,Timestamp,DatetimeIndex,Period和Timedelta,下面我... 目录1. 时间数据类型与基础操作1.1 核心时间对象体系1.2 时间数据生成技巧2. 时间索引与数据

Python实现自动化Word文档样式复制与内容生成

《Python实现自动化Word文档样式复制与内容生成》在办公自动化领域,高效处理Word文档的样式和内容复制是一个常见需求,本文将展示如何利用Python的python-docx库实现... 目录一、为什么需要自动化 Word 文档处理二、核心功能实现:样式与表格的深度复制1. 表格复制(含样式与内容)2

python如何生成指定文件大小

《python如何生成指定文件大小》:本文主要介绍python如何生成指定文件大小的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录python生成指定文件大小方法一(速度最快)方法二(中等速度)方法三(生成可读文本文件–较慢)方法四(使用内存映射高效生成

Maven项目中集成数据库文档生成工具的操作步骤

《Maven项目中集成数据库文档生成工具的操作步骤》在Maven项目中,可以通过集成数据库文档生成工具来自动生成数据库文档,本文为大家整理了使用screw-maven-plugin(推荐)的完... 目录1. 添加插件配置到 pom.XML2. 配置数据库信息3. 执行生成命令4. 高级配置选项5. 注意事