主要内容

模拟扫描雷达

这个例子演示了如何用扫描单基地雷达模拟探测和跟踪。这个示例向您展示了如何配置具有机械和电子扫描功能的统计雷达模型,如何设置场景管理工具来处理平台动态和定时,以及如何检查生成的检测和轨迹。

介绍

统计雷达模型

统计雷达模型,如radarDataGenerator为雷达系统的早期研制提供有价值的数据。系统从其性能特征的角度建模,并使用最小的参数集和已建立的理论来确定该系统将如何与其环境交互。这包括基本系统参数的规范,如工作频率、带宽和脉冲重复频率(PRF),以及重要的指标,如角度和距离分辨率、虚警率和检测概率。雷达型号有专为单基地、双基地和无源操作模式。该模型的主要输出是原始检测数据或轨道更新序列。当不产生时域信号时,发射器可以为它所使用的波形指定一个数字ID,这样就可以考虑适当的信号增益和抑制。如果接收雷达知道发射机的位置和方向,则可以在雷达帧中输出检测,或者在场景帧中输出检测。轨迹是使用各种跟踪和轨迹管理算法之一生成的。数据速率由系统更新速率规范处理,以便以适当的速率生成检测。

场景管理

这个模型与一个radarScenario在动态环境中随时间生成检测或跟踪数据。该场景对象不仅管理仿真时间,而且可以在需要检测帧或轨迹更新时,根据需要处理场景中对象之间的数据结构传递。雷达目标安装在一个平台上,该平台处理动态,如场景框架中的位置、速度和方向。这些场景平台还可能包含签名信息,该信息描述了平台对各种类型的传感器的显示方式。为了我们的目的rcssignature.类将用于赋予目标平台一个雷达横截面。

扫描

控制扫描的属性可以通过雷达对象定义找到。扫描可以是机械的,也可以是电子的。使用机械扫描,指向方向不能瞬间改变,但受到方位和仰角的最大旋转速率的限制。用电子扫描就没有这样的约束,扫描方向在每个循环开始时重置。雷达也可以同时进行机械和电子扫描。

该图显示了这两种模式之间的扫描模式的差异。通过电子模式,扫描角始终增加,并且通过机械模式扫描位置总是改变到相邻位置。雷达首先扫描方位角,因为这是初级扫描方向,即扫描极限范围最大的方向。

场景:空气监测

对于这种情况,考虑一个扫描雷达系统,其天线安装在塔上,如可能用于飞机的跟踪。您将模拟具有不同RCS配置文件的几个入站平台,并检查检测和跟踪数据。您可以看到SNR的效果和距离检测的能力。

雷达系统

使用1 GHz的中心频率和1.5 MHz的带宽,可以产生约100米的距离分辨率。要对每个扫描位置的单个脉冲建模,将更新速率设置为所需的PRF。设置范围模糊度的大小来反映PRF的选择,并将范围模糊度的上限设置为范围模糊度大小的两倍,以实现对第一和第二范围模糊的对象的检测。

为重复性设置种子RNG('默认');%系统参数c = physconst (“光速”);fc = 1 e9;%Hz.带宽= 1.5 e6;%Hz.脉冲重复频率= 4 e3;%Hz.updaterate = prf;Rangeres = C /(2 *带宽);%M.rangeAmb = c /(2 *脉冲重复频率);%M.rangelims = [0 2 * rangeamb];

除了机械扫描和电子扫描方式的选择外,扫描行为还受方位和仰角扫描限制和视场(FoV)的规范控制。视场由每个扫描位置的可观测区域的方位角和仰角范围组成,类似于双边半功率波束宽度规范。选择扫描点,使扫描限制定义的总的角度范围被大小等于视场的非重叠段覆盖。扫描限制在雷达的帧中指定,它可以通过MountingAngles财产。

扫描方位角+/- 20度,高度+/- 10度。将FOV设置为4度方位角和8度高度。最后,指定模拟的完整扫描总数,这将决定总模拟时间。

%扫描参数azlimits = [-20 20];ellimits = [-10 10];fov = [4; 8];%deg.numFullScans = 24;要模拟的完全扫描的数量

扫描点的总数如下图所示。扫描限制表示的最小和最大扫描角度参考天线的轴向矢量,因此在一个方向上扫描的总面积大于扫描限制的范围,最多可达该方向FoV的一半。图案总是在az/el上的矩形网格。

Numscanpointsaz =地板(差异(Azlimits)/ foV(1))+ 1;numscanpointsel =楼层(差异(ellimits)/ fov(2))+ 1;numscanpoints = numscanpointsaz * numscanpointsel;

使用了一个与视场分离的角度分辨率规范,这允许角估计算法的建模,如单脉冲。这个角度分辨率决定了区分目标的能力,并用于从Cramer-Rao下界(CRLB)推导实际角度精度,以该分辨率估计单脉冲角度。类似地,距离分辨率决定了区分两个目标所需的最小距离,但实际距离测量精度来自于用于距离估计的CRLB。精确测量(量程,量程速率,角度等)可以通过关闭测量噪声使用哈斯尼斯财产。通常,测量误差不会随着信噪比无限制地增加而趋于零。这可以通过偏置属性(RangeBiasFraction等)来捕捉,每种可测量类型都有一个偏置属性。出于我们的目的,我们将保持默认值。

在每个方向上使用相当于视场四分之一的角度分辨率,这允许在视场中在相同范围内最多识别16个点目标。

动物遗传资源= fov / 4;

参考目标和雷达环路增益

该雷达模型使用该雷达模型而不是直接指定像发射功率,噪声功率,噪声功率和所用的检测算法的细节,而是使用概念雷达环增益将目标RCS和范围转换为SNR,该SNR直接转换为检测概率。雷达循环增益是任何雷达系统的重要特性,并使用a计算参考目标,它包括一个参考距离和RCS,以及一个接收机工作特性(ROC),用于给定的检测和虚警概率。

对20公里和0 dBsm的参考目标使用90%的探测概率。使用默认的虚警率,每个分辨率单元格每个更新1e-6个虚警。

refTgtRange = 20 e3;refTgtRCS = 0;detProb = 0.9;faRate = 1 e-6;

构建雷达

使用上述参数构造雷达。使用仰角中的低扫描限制来设置雷达从其平台的俯仰安装角度。这将使轴向向量向上,以便扫描区域的下缘平行于地面(即没有扫描点将雷达指向地面)。

距= elLimits (1);%安装天线向上旋转

使仰角测量,假警报产生,和距离歧义与相应的已经……财产。模拟仅测量范围和角度,设置的雷达HasRangeRate假。为了在场景坐标中获得检测,雷达需要了解发射器的方向。因为这个例子使用单体雷达,所以这可以通过使惯性导航系统(INS)功能能够实现劳斯财产。

%创建雷达对象传感器= 1;%需要唯一标识符雷达= radarDataGenerator (sensorIndex,“UpdateRate”,updaterate,...“DetectionMode”'单身'“ScanMode”“电子”“TargetReportFormat”“检测”“DetectionCoordinates”“场景”...'haselevation',真的,“之内”,真的,“HasRangeRate”假的,“HasRangeAmbiguities”,真的,“HasFalseAlarms”,真的,...“CenterFrequency”,fc,“带宽”、带宽、...'rangeresolution'管理员,'azimuthresolution'动物遗传资源(1)“ElevationResolution”动物遗传资源(2)...“ReferenceRange”,Reftgtrange,“ReferenceRCS”refTgtRCS,'侦查可力'detProb,“FalseAlarmRate”faRate,...“RangeLimits”rangeLims,“MaxUnambiguousRange”rangeAmb,“ElectronicAzimuthLimits”azLimits,'ElectionelevationLimits'elLimits,...'fieldofview'fov,'mountingangles', [0 0]);

使用helper类来可视化扫描模式,并在模拟循环中对其进行动画处理。

scanplt = helperScanPatternDisplay(雷达);scanplt.makeOverviewPlot;

图中包含一个轴对象。具有标题扫描模式的轴对象包含21个类型的线路。这些对象代表扫描点,foV,扫描周边。

方位角上的扫描点精确地延伸到指定的方位角扫描限制,而仰角扫描点根据需要稍微拉进来,以避免重叠或冗余扫描点。

计算系统的范围角分辨率单元的总数,以及用于检测的总帧数。然后通过将误报率乘以在整个模拟中询问的分辨率单元的总数来计算预期的误报次数。

numResolutionCells = diff (rangeLims) * prod (fov) /(管理员* prod(动物遗传资源));numFrames = numFullScans * numScanPoints;%用于检测的帧总数expNumFAs = faRate * numFrames * numResolutionCells预期FAs数%
Expnumfas = 9.5040

情景和目标

使用radarScenario对象来管理顶级模拟流。该对象提供了添加新平台的功能,并从场景中的所有传感器对象快速生成检测。它还管理模拟中的时间流。使用前一步计算的总帧数来找到所需的帧StopTime.为了根据场景中对象的更新速率自适应更新模拟时间,设置场景更新速率为零。

%创建场景stopTime = numFullScans * numScanPoints /脉冲重复频率;现场= radarScenario (“StopTime”stopTime,“UpdateRate”, 0);

使用平台生成新平台对象的方法,将它们添加到场景,并返回句柄以访问平台属性。每个平台都有一个唯一的ID,由施工时的场景分配。对于静态平台,只有位置属性需要设置。为了模拟一个标准的等速运动轨迹,使用kinematictrajectory.对象并指定位置和速度。

创建两个不同距离的目标平台,都以不同的速度和角度入站。

%建立平台rdlatt =平台(场景,'位置'[0 0 12]);在原点上方12米处tgtPlat(1) =平台(场景,'弹道',kinematictrajectory('位置',[38e3 6e3 10e3],“速度”(-380 -50 0)));tgtPlat(2) =平台(场景,'弹道',kinematictrajectory('位置'(25 e3 3 e3 1 e3),“速度”(-280 -10)));

为了方便检测方法和自动提高仿真时间,场景需要知道较早构造的雷达目标。为此,将雷达安装到平台上,方法是填充传感器平台属性。若要在平台上安装多个传感器,则传感器属性可以是传感器对象的单元格数组。

将雷达安装到平台rdlpt.sensors =雷达;

rcssignature.类可用于指定平台RCS作为方向角度的函数。对于简单的常量RCS签名,请设置图案属性到标量值。让一个平台为20 dbsm,另一个平台和其他4 dbsm展示可检测性的差异。

%设置目标平台RCS配置文件tgtRCS = [20,4];%dbsm.tgtPlat(1)。签名= rcsSignature ('图案', tgtRCS (1));tgtPlat(2)。签名= rcsSignature ('图案',tgtrcs(2));

检测能力

计算可以预期目标的理论SNR。因为使用了简单的运动轨迹,所以计算真相位置和范围。

time =(0:numframes-1)。'/ updaterate;tgtpostruth(:,:,1)= tgtplat(1).position +时间* tgtplat(1).trajectory.velocity;tgtpostruth(:,2)= tgtplat(2).position +时间* tgtplat(2).traptory.velocity;tgtrangetruth(:,1)= sqrt(sum((tgtpostruth(:,:,1)-rdrplat.position)。^ 2,2));tgtrangetruth(:,2)= sqrt(sum((tgtpostruth(:,2)-rdldplat.position)。^ 2,2));

然后利用已知的目标RCS和雷达模型计算的雷达环路增益,得到每个目标的真实信噪比。

tgtSnr = tgtRCS - 40*log10(tgtRangeTruth) + radar.RadarLoopGain;

对于单级检测方案,如CFAR,在指定的检测概率和虚警率下,给出检测所需的最小信噪比为

Minsnr = 20 * log10(2 * radar.falsealrate) -  erfcinv(2 * radar.detectionspability);% dB

计算最小检测范围。

RD = 10. ^((tgtrcs  -  minsnr + radar.radarloopgain)/ 40);%米

将目标的平均范围和SNR与最小范围和SNR阈值进行比较。目标的总行为距离足够小,即基于范围的SNR不会显着变化。

snrMargin = mean(tgtSnr,1) - minSnr
snrmargin =1×28.0854 - 0.0051
rangeMargin = (Rd - mean(tgtRangeTruth,1))/ 13%km.
rangemargin =1×223.5360 - 0.0074

在给定的CFAR参数下,第一个目标比检测所需的亮度约为8 dB,而第二个目标被认为几乎无法检测到。

模拟检测

主模拟循环通过呼叫开始推进在方案对象上。此方法步骤前进到下次场景中的对象需要更新的情况,并在达到指定的停止时间后返回false,退出循环。请注意第一次呼叫推进不步进模拟时间,使第一帧数据采集可能发生在0秒。作为使用的替代品推进现场。SimulationStatus可以检查以确定模拟是否已运行到完成。

在回路中,可以对任何传感器对象单独调用检测和轨迹生成方法(参见传感器)方法),但是存在一些方便的方法,可以通过一个函数调用为场景中的所有传感器和所有目标生成检测和跟踪。因为我们只有一个传感器,检测(现场)是一个很好的解决方案,可以获得场景中所有目标的检测列表。通过在这样的顶级发起检测的产生,场景本身将所需时序,INS和其他配置数据的传递传递给传感器。这里使用可视化辅助类别来为扫描模式进行动画。

allDets = [];%初始化生成的所有检测的列表Lookangs = Zeros(2,NumFrames);simtime = zeros(1,numframes);框架= 0;%当前帧推进(场景)%前进直到到达停止时间%增加帧索引和记录模拟时间框架=帧+ 1;SIMTEME(FRAME)= Sceem.simulationtime;%生成新的检测依据=检测(现场);记录检查角度观察(:,框架)= Radar.Lookangle;%更新覆盖图scanplt.updatePlot (radar.LookAngle);%编译任何新的检测allDets = (allDets;依据);结束

图中包含2个轴对象。带标题扫描模式的轴对象1包含22个类型的型号,修补程序。这些对象代表扫描点,foV,扫描周边。轴对象2带标题光束指向包含39个类型表面,QUIVIVE,LINE的对象。

扫描行为

绘制记录的前两次完整扫描的角度,以检查模式。雷达首先在方位角扫描,并在每个方位角扫描结束时升高仰角,在每次新的扫描开始时立即重置视场角度。

图;情节(simTime (1:2 * numScanPoints) * 1 e3, lookAngs (:, 1:2 * numScanPoints));包含(“时间(ms)”);ylabel ('看角度(DEG)');传奇(“方位”“高度”);标题(的角度看);

图中包含一个轴对象。标题为“看角度”的轴对象包含两个类型为line的对象。这些物体表示方位角,仰角。

检测

检查一个objectDetection作为雷达输出。

alldets {1}
ans = objectDetection with properties: Time: 7.5000e-04 Measurement: [3x1 double] MeasurementNoise: [3x3 double] SensorIndex: 1 ObjectClassID: 0 MeasurementParameters: [1x1 struct] ObjectAttributes: {[1x1 struct]}

时间为雷达产生探测的仿真时间。SensorIndex显示这个检测是由哪个传感器生成的(当有多个传感器并且你使用场景级检测方法时,这是很重要的)。测量是与检测相关的可测量值。格式取决于检测模式和输出坐标的选择。测量管理给出测量的方差或协方差,并用于跟踪模型。在场景坐标下输出检测时,测量场就是估计的目标位置矢量,测量噪声给出了该位置估计的协方差。

ObjectAttributes字段包含一些有用的元数据。检查第一次检测的元数据的内容。

alldets {1} .bjectattributes {1}
ans =结构体字段:TargetIndex: 3 SNR: 12.5894

TargetIndex显示生成检测的平台的索引,该检测是在平台所构造的顺序中所分配的唯一标识符。该检测的SNR是关于我们从相应的目标平台预期的内容。当检测是错误的警报时,TargetIndex将是-1,这是一个无效的平台ID。

将每次检测的目标指标、信噪比和时间收集成向量。

dttgtidx = cellfun(@(t) t. objectattributes{1}。TargetIndex allDets);dttgtsnr = cellfun(@(t) t. objectattributes {1}. dttgtsnr = cellfun(@(t) t. objectattributes)信噪比、allDets);detTime = cellfun(@(t) t. time, allDets);firstTgtDet = find(detTgtIdx == tgtPlat(1).PlatformID);第二tgtdet = find(detTgtIdx == tgtPlat(2).PlatformID);

找到FA检测的总数。

numFAs =元素个数(找到(detTgtIdx = = 1))
numFAs = 7

这与早先计算的预期FAs数接近。

通过检测和绘图收集测量数据以及两个目标平台的真理位置。

tgtPosObs = cell2mat(cellfun(@(t)) t. measurement,allDets,“UniformOutput”,0)。');次要情节(1、2、1);HelperplotPositionError(tgtpostruth(:,:,1),时间,tgtposobs(:,firsttgtdet),dettime(firsttgtdet),scene.simulationtime);标题(“目标1位置误差”);次要情节(1、2、2);helperPlotPositionError (tgtPosTruth(:,: 2),时间,tgtPosObs (:, secondTgtDet) detTime (secondTgtDet)的场景。SimulationTime);标题('目标2位置错误');集(gcf,'位置',得到(gcf,'位置')+[0 0 600 0]);

图中包含2个轴对象。轴对象1标题为目标1位置错误包含一个类型为line的对象。标题为目标2位置错误的坐标轴对象2包含一个类型为line的对象。

大多数探测源自第一个目标。然而,第一个目标并没有在每一帧中被检测到,而第二个目标虽然信噪比较低,但却产生了很多次检测。虽然第一个目标易于检测,但由于目标处于第二距离歧义,且未进行消歧,测量误差较大。第二目标被探测时,其位置误差与100米距离分辨率一致,角度分辨率相对较差。

看看检测的总方差与信噪比。总方差是每个笛卡儿方向(X, Y, Z)的边际方差之和。这个方差包括距离-角度空间的估计以及这些统计数据转换到场景坐标的影响。

detTotVar = cellfun(@(t) trace(t. measurementnoise),allDets);图;次要情节(1、2、1);helperPlotPositionTotVar (detTgtSnr (firstTgtDet) detTotVar (firstTgtDet));标题('第一个目标');次要情节(1、2、2);HelperplotPositionTotVar(DetTGTSNR(DECTTGTDET),Dettotvar(SwiteTGTDET));标题('第二个目标');集(gcf,'位置',得到(gcf,'位置')+[0 0 600 0]);

图中包含2个轴对象。标题为First Target的对象1包含一个类型为line的对象。标题为Second Target的轴对象2包含一个类型为line的对象。

虽然由于范围模糊性,第一目标的绝对位置误差更大,但是测量方差较低的测量方差反映了第一目标的更大的SNR及其明显短的范围。

模拟轨道

radarDataGenerator也能够执行开环跟踪。它可以输出轨迹更新,而不是输出检测。

再次运行模拟,但这一次让配置雷达模型直接输出轨迹。首先,设置雷达模型的一些属性,在场景帧中生成航迹。

释放(雷达);%解锁重新模拟RADAR.TARGETREPORTFORAT =“跟踪”;雷达。TrackCoordinates ='设想'

跟踪可以由许多不同的算法来执行。有简单的阿尔法-贝塔滤波器和线性、扩展和无味的卡尔曼滤波器,以及恒定速度、恒定加速度和恒定转速的运动模型。属性中使用的算法FilterInitializationFcn财产。这是一个函数处理或字符向量中的函数的名称,例如@initcvekf“initcvekf”.如果使用函数句柄,它必须接受初始检测作为输入,并返回一个初始化的跟踪器对象。可以使用具有相同签名的任何自定义函数。对于这个例子,使用恒定速度扩展卡尔曼滤波器。

雷达。FilterInitializationFcn = @initcvekf;

仿真回路的总体结构是相同的,但在这种情况下是雷达的必须手动调用函数。所需的输入是通过呼叫获取的目标姿势结构targetPoses在雷达平台上,即INS结构上,通过呼叫获取构成在雷达平台上,电流模拟时间。

重启(现场);%重启方案allTracks = [];%初始化所有跟踪数据的列表推进(场景)%生成新的轨道数据tgtPoses = targetPoses (rdrPlat);ins =姿势(rdrPlat);跟踪=雷达(tgtPoses、ins scene.SimulationTime);%编译任何新的曲目数据AllTracks = [Alltracks; Tracks];结束

检查轨道对象。

allTracks (1)查看第一个轨道更新
ans = objectTrack属性:TrackID: 1 BranchID: 0 SourceIndex: 1 UpdateTime: 0.0093年龄:34个国家:x1双[6]StateCovariance: [6 x6双]StateParameters: [1 x1 struct] ObjectClassID: 0 TrackLogic:“历史”TrackLogicState: [1 1 0 0 0] IsConfirmed: 1 IsCoasted: 0 IsSelfReported: 1 ObjectAttributes: [1 x1 struct]

TrackID跟踪文件的唯一标识符,和SourceIndex是报告曲目的跟踪器对象的ID,当您在场景中有多个跟踪器时很有用。当使用多假设跟踪器时,BranchID给出所用假设的指标。的状态字段包含此更新的状态信息。由于使用了等速模型和场景框架轨迹坐标,状态由位置矢量和速度矢量组成。UpdateTime给出这个轨道更新生成的时间。另一个重要的属性,IsCoasted,告诉您该轨迹更新是否使用了一个新的目标检测来更新过滤器,或者它只是从上一次目标检测的时间向前传播(该轨迹是“滑行”的)。

ObjectAttributes结构给出了正在检测其签名的平台的ID,以及该签名在更新期间的信噪比。

allTracks(1)。ObjectAttributes
ans =结构体字段:TargetIndex: 3 SNR: 18.5910

收集目标指标和更新时间。还要检查有多少检测被用来更新我们的轨道。

trackTgtIdx = arrayfun(@(t) t. targetindex,[allTracks.ObjectAttributes]);updateTime = [allTracks.UpdateTime];firstTgtTrack = find(trackTgtIdx == tgtPlat(1).PlatformID);drawtext (trackTgtIdx == = tgtPlat(2).PlatformID);numUpdates =元素个数(找到(~ (allTracks.IsCoasted)))用新检测数据更新轨道的总数
numUpdates = 33

这大致是第一部分生成的非FA检测的数量。

看看XY平面上报告的位置和它们的协方差,以及真位置数据。由于第一个目标处于第二范围歧义,且没有进行消歧,为第一个目标找到“真理”的歧义位置。

los = tgtPosTruth(:,: 1) - rdrplate . position; / /指定位置R =√sum(洛杉矶。^ 2,2));洛杉矶= los. / R;Ramb =国防部(R, rangeAmb);tgtPosTruthAmb = rdrPlat。位置+洛。* Ramb;

使用辅助函数绘制位置轨迹的可视化图。

图;次要情节(1、2、1);helperPlotPositionTrack (tgtPosTruthAmb allTracks (firstTgtTrack));标题(第一个目标跟踪的);次要情节(1、2、2);helperPlotPositionTrack (tgtPosTruth (:,: 2), allTracks (secondTgtTrack));标题(第二个目标跟踪的);集(gcf,'位置',得到(gcf,'位置')+[0 0 600 0]);

图中包含2个轴对象。标题为First Target Track的轴对象1包含11个类型为line的对象。这些对象代表真实位置,位置估计,协方差。标题为Second Target Track的轴对象2包含25个类型为line的对象。这些对象代表真实位置,位置估计,协方差。

在这两种情况下,位置估计开始时都收敛于真理(或范围模糊的真理)轨迹。对于第一个目标,我们有更多的轨迹更新,最终状态看起来更接近稳态收敛。观察协方差轮廓,注意随着跟踪滤波器升温,预期的初始尺寸减小。

为了更仔细地观察跟踪性能,绘制两个目标的位置估计误差的大小,并指出哪些样本被目标检测更新。

图;次要情节(1、2、1);helperPlotPositionTrackError (tgtPosTruthAmb、时间allTracks (firstTgtTrack) updateTime (firstTgtTrack));标题('第一个目标模糊位置错误');次要情节(1、2、2);helperPlotPositionTrackError (tgtPosTruth(:,: 2),时间,allTracks (secondTgtTrack) updateTime (secondTgtTrack));标题('第二个目标位置错误');集(gcf,'位置',得到(gcf,'位置')+[0 0 600 0]);

图中包含2个轴对象。轴对象1具有标题的第一个目标模糊位置误差包含2个类型的类型。这些对象代表惯多,更新。轴对象2具有标题第二目标位置误差包含2个类型的型号。这些对象代表惯多,更新。

对于信噪比较大的第一个目标,在有新的检测来更新轨迹文件(用红色圆圈表示)的样本上,位置误差减小。由于第二目标具有较低的信噪比,个别检测的误差大到足以增加跟踪的位置误差。尽管如此,第二目标航迹位置误差在初始阶段有下降趋势,估计状态有可能收敛。

第一个目标轨道有个问题。由于它处于第二距离模糊,且有一个垂直于视线的运动分量,表观速度是变化的,匀速卡尔曼滤波器无法收敛。

结论

在此示例中,您可以配置统计雷达系统,用于仿真和分析目标可检测性和可跟踪性。您了解如何使用扫描限制和视野属性来定义扫描模式,如何使用方案管理工具运行雷达模型,以及如何检查生成的检测和跟踪。

辅助功能

函数'; / /错误提示:';/ /错误提示:';/ /错误提示:';/ /错误提示:';tgtPosTruthY = interp1(时间,tgtPosTruth (:, 2), detTime)。”;tgtPosTruthZ = interp1(时间,tgtPosTruth (:, 3), detTime)。”;err = sqrt((tgtPosTruthX - tgtPosObs(1,:)))。^ 2 + (tgtPosTruthY tgtPosObs(2:))。^ 2 + (tgtPosTruthZ tgtPosObs (3:)) ^ 2);情节(detTime * 1 e3,犯错/ 1 e3,“- o”);网格;xlim ([0 T * 1 e3]);ylabel (“均方根误差(公里));包含(“时间(ms)”);结束函数helperPlotPositionTotVar(detttgtsnr,detTotVar) plot(detttgtsnr,detTotVar,)“- o”);网格;包含('snr(db)');ylabel (“总Var (m ^ 2)”);结束函数helperPlotPositionTrack(tgtPosTruth,tracks) plot(tgtPosTruth(: 1)/1e3,tgtPosTruth(: 2)/1e3);持有;updateIdx = find(〜[tracks.iscoasted]);Theta = 0:0.01:2 * PI;印第安纳州= 1:2:元素个数(updateIdx)%绘制更新T =歌曲(updateIdx(印第安纳州));情节(T.State (1) / 1 e3, T.State (3) / 1 e3,*黑的);sigma = T.StateCovariance([1 3],[1 3]);[evec, eval] = eigs(σ);杂志=√诊断接头(eval)。”;u = evec(: 1) *杂志(1);v = evec(:, 2) *镁(2);X = cos *u(1) + sin *v(1);Y = cos *u(2) + sin *v(2);x/1e3 + T.State(1)/1e3,y/1e3 + T.State(3)/1e3,'品红');结束持有;网格;包含(“X(公里));ylabel (“Y”(公里));传奇(“真理的位置”'位置估计'协方差的“位置”'西北');结束函数HelperplotPositionTrackError(TGTPOStruth,Time,Tracks,UpdateTetime)state = [tracks.state];sx =状态(1,:);sy = state(3,:);sz =州(5,:);x = interp1(时间,tgtpostruth(:,1),updatetime);y = interp1(时间,tgtpostruth(:,2),updatetime);z = interp1(时间,tgtpostruth(:,3),updatetime);err = sqrt((x-sx)。^ 2+(y-sy)。^ 2+(z-sz)。^ 2);iSupdate =〜[tracks.iscoasted];绘图(UpdateTetime * 1E3,ERR); hold;情节(updateTime (isUpdate) * 1 e3,犯错(isUpdate),”或“);持有;网格;包含(“更新时间(ms)”);ylabel (“错误(m)”)传说(“摸”“更新”“位置”'西北');结束