DDMA信号处置惩罚以及数据处置惩罚的流程---随机目的天生 ...

打印 上一主题 下一主题

主题 626|帖子 626|积分 1878

Hello,大家好,我是Xiaojie,很久不见,接待大家可以或许和Xiaojie一起学习毫米波雷达知识,Xiaojie预备连载一个系列的文章—DDMA信号处置惩罚以及数据处置惩罚的流程,本系列文章将从目的天生、信号仿真、测距、测速、cfar检测、测角、目的聚类、目的跟踪这几个模块逐步先容,这个系列的文章约莫是一个7-8篇左右。
最终结果如下:

整体文件的目录树如下:

本篇文章重要讲的是目的天生的部分。
目的天生部分重要是在targetGenerate目录下实现,按隔随机帧数来天生目的的随机距离、随机速率、随机角度以及随机横向距离。
generateRandFrame.m先容

generateRandFrame.m文件重要目的是天生随机的帧数,目的是隔多少帧来天生一个新的目的。在下面代码中会在[18,23]中天生一个随机数。
  1. %% 获取随机帧数,表征隔几帧生成一个新目标
  2. function frame = generateRandFrame()
  3.     frameMin = 18; %最小帧号
  4.     frameMax = 23; %最大帧号
  5.     %生成随机帧号,范围为[frameMin,frameMax]
  6.     frame = round(rand(1,1)*(frameMax-frameMin))+frameMin;
  7. 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];
  1. %% 产生一个新的目标
  2. function target = generateNewTarget()
  3.     loMin = -10; %横距的最小值
  4.     loMax = 10; %横距的最大值
  5.     %随机生成目标的横距,范围为[loMin,loMax]
  6.     targetLo = round(rand(1,1)*(loMax-loMin))-loMax;
  7.     speedInit = 0; % 目标速度初始化为0
  8.     speedMax = 25; % 目标速度的最大值
  9.     speedMin = -25; % 目标速度的最小值
  10.     % 随机生成目标的速度,范围为[speedMin,speedMax]
  11.     while (speedInit == 0)
  12.         speedInit = round(rand(1,1)*(speedMax-speedMin))-speedMax;
  13.     end
  14.     if speedInit < 0 %目标速度的小于0,目标从远靠近
  15.         rangeInit = 125;
  16.     else
  17.         rangeInit = 2 + abs(targetLo); %目标从近到远
  18.     end
  19.     angleInit = asind(targetLo/rangeInit); %目标角度初始化
  20.     target = [rangeInit, speedInit, angleInit, targetLo]; %目标信息生成
  21. end
复制代码
targetUpdate.m先容

随着帧数的变化,目的的径向速率以及角度会发生变化(假设目的的径向速率不变),targetUpdate.m文件重要目的是对天生目的的径向距离以及角度进行更新。
  1. %% 目标信息更新
  2. function target = targetUpdate(parameter,target)
  3.     for targetIdx = 1:1:parameter.targetNums
  4.         
  5.         targetRange = target(targetIdx,1); %目标的距离
  6.         targetSpeed = target(targetIdx,2); %目标的速度
  7.         targetLo = target(targetIdx,4); %目标的横距
  8.         targetRange = targetRange + targetSpeed * parameter.frameTime; %目标距离计算
  9.         targetAngle = asind(targetLo/targetRange); %目标角度计算
  10.         target(targetIdx,1) = targetRange; %距离更新
  11.         target(targetIdx,2) = targetSpeed; %速度更新
  12.         target(targetIdx,3) = targetAngle; %角度更新
  13.     end
  14.    
  15. end
复制代码
generateMovingTarget.m先容

generateMovingTarget.m是天生移动的目的,当frameNumLoops为0时,会天生新的目的且目的列表更新并天生下次目的天生的随机帧号;且每帧都会进行目的信息更新
  1. %% 生成动态目标
  2. function [parameter,target] = generateMovingTarget(parameter,target)
  3.    
  4.     parameter.frameNumLoops = parameter.frameNumLoops - 1; %frameNumLoops
  5.     % 如果frameNumLoops为0,则生成新的目标
  6.     if parameter.frameNumLoops == 0
  7.         newTarget = generateNewTarget(); % 生成新目标
  8.         parameter.targetNums = parameter.targetNums + 1; %目标数增加
  9.         target = [target ; newTarget]; %target更新
  10.         parameter.frameNumLoops = generateRandFrame(); %生成随机帧号
  11.     end
  12.     target = targetUpdate(parameter,target); %目标信息更新
  13. end
复制代码
至此,本片文章就此竣事了。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

灌篮少年

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表