Advertisement

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

阅读量:

嗨!老铁们!我是Xiaojie,在这里等你呢!今天终于有机会见到大家了!欢迎加入Xiaojie的知识分享社区,在这里我会与大家一起探讨毫米波雷达相关的知识与应用。我打算开一个关于DDMA信号处理及其数据处理流程的系列文章哦~ 这个系列将系统地介绍七个到八个关键模块的具体步骤:首先是目标初始化阶段(包括目标生成)、接着是信号生成阶段(涉及信号仿真)、随后是距离测量阶段(涵盖测距技术)、随后是速度估算环节(包括测速方法)、之后是杂波抑制技术模块(CFAR检测部分)、再后是角度估计部分(涉及测角算法)、最后是智能识别算法部分(结合目标聚类与实时处理技术)。预计会有七到八篇文章来全面解析这一流程体系

最终效果如下:

整体文件的目录树如下:

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

目标生成部分主要基于targetGenerate目录下的实现,在每隔一定的时间间隔内为每个目标生成其相应的:(1)与预定位置之间的距离;(2)运动速度;(3)旋转角度;(4)横向偏移距离。

generateRandFrame.m介绍

该MATLAB文件的主要功能是生成随机帧的数量;其目标是每隔一定数量的帧来生成一个新的目标;该代码将在[18,23]区间内生成一个随机数值。

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

generateNewTarget.m介绍

该文件的主要功能是生成一个新的跟踪目标。该跟踪涉及四个关键参数:被跟踪物体在其极坐标下的半径(即距中心的距离)、半径的变化率(即瞬时运动方向的速度分量)、极角以及横向位置坐标值。被跟踪物体的位置坐标值位于区间[-10, 10]之间。其初始半径变化率数值落在区间[-25, 25]范围内。被跟踪物体距中心的距离与其瞬时运动方向的速度分量相关联:当速度分量小于零时,则其初始距中心的距离设为固定值125;而当速度分量大于零时,则其初始距中心的距离设为表达式"2 + |纵向位置值|"的结果。随后计算出起始仰角angle Init等于反正弦函数作用于纵向位置值除以初始半径的结果;最终将这些参数整合后得到的目标坐标表示为target = [r; v_r; theta; y];

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

targetUpdate.m介绍

当帧数发生变化时,目标的径向速度和角度会随之变化(假设在这一过程中,目标的径向速度保持不变)。该文件的核心功能是对生成的目标进行径向距离和角度更新。

复制代码
    %% 目标信息更新
    function target = targetUpdate(parameter,target)
    
    for targetIdx = 1:1:parameter.targetNums
        
        targetRange = 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; %角度更新
    end
    
    end
    
    
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
    
    代码解读

generateMovingTarget.m介绍

该程序用于生成移动的目标。每当frameNumLoops等于零时,程序不仅会创建新的目标,并且还会更新目标列表以准备下次的目标,并为下一个随机帧号提供相应的配置。在每一帧处理过程中,系统会对当前的目标信息进行记录和更新。

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

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

全部评论 (0)

还没有任何评论哟~