主要内容

模拟雷达探测的表面目标混乱

这个例子展示了如何模拟检测目标表面的杂物。你首先会看到如何使用统计雷达模型检查的影响多普勒检测能力分离,然后用地形数据,看看视线遮挡可以模拟雷达的场景。

rng默认的

目标与杂波多普勒检测表面分离

本节演示了如何多普勒分离允许检测移动目标即使表面反射意义重大。您将配置一个雷达场景模拟一个典型的侧视机载雷达,指着一个表面的目标。你将首先目标是静止的,然后计算一个速度矢量,将目标从杂物,并检查结果的检测。

静止的目标

首先创建一个radarDataGenerator。集MountingAngles因此雷达指向右边的平台(-90度安装偏航角)和向下在15度(15度俯角)。使用1 GHz的频率,100米距离分辨率,5 kHz脉冲重复频率,和128个脉冲。梁是对称的4度的双面波束宽度的方位角和仰角。

mountingYPR = 15 0 [-90];fc = 1 e9;管理员= 100;脉冲重复频率= 5 e3;numPulses = 128;波束宽度= 4;

使用脉冲重复频率和脉冲数量规范计算名义多普勒和数据解析。

dopRes =脉冲重复频率/ numPulses;λ= freq2wavelen (fc);rangeRateRes = dop2speed (dopRes,λ)/ 2;

脉冲多普勒雷达范围和数据模棱两可。计算出明确的距离和径向速度。

unambRange = time2range(1 /脉冲重复频率);unambRadialSpd = dop2speed(脉冲/ 4,λ);

构建radarDataGenerator。让传感器指数= 1和禁用扫描功能。每个相干雷达将更新一次处理区间(CPI)。单站配置操作模式,检测输出的场景坐标。使仰角测量、数据测量和范围和数据上的模棱两可。禁用假警报和噪音检测,这样可以清楚的看到多普勒分离的影响。最后,设置参考目标用于计算环路增益0 dBsm目标20公里范围,检测概率为90%。

cpiTime = numPulses /脉冲重复频率;rdr = radarDataGenerator (1,“没有扫描”,“UpdateRate”1 / cpiTime,“MountingAngles”mountingYPR,“DetectionMode”,“单站”,“TargetReportFormat”,“检测”,“DetectionCoordinates”,“场景”,“之内”,真的,“HasElevation”,真的,“HasFalseAlarms”假的,“HasNoise”假的,“HasRangeRate”,真的,“HasRangeAmbiguities”,真的,“HasRangeRateAmbiguities”,真的,“MaxUnambiguousRadialSpeed”unambRadialSpd,“MaxUnambiguousRange”unambRange,“CenterFrequency”足球俱乐部,“FieldOfView”波束宽度,“AzimuthResolution”波束宽度,“ElevationResolution”波束宽度,“RangeResolution”管理员,“RangeRateResolution”rangeRateRes,“ReferenceRange”,20 e3,“ReferenceRCS”0,“DetectionProbability”,0.9);

创建场景,更新速度设置为0让更新间隔来自传感器的现场。

现场= radarScenario (“UpdateRate”0,“IsEarthCentered”、假);

landSurface场景方法用于定义属性的表面区域的场景。您将使用它来指定一个无界均匀表面有一个关联的反射率模型。使用constant-gamma反射率伽马值适合平原,可以发现的surfacegamma函数。surfaceReflectivityLand用于创建的反射率模型与场景相关的表面通过吗RadarReflectivity财产。

gammaDB = surfacegamma (“平原”);反射= surfaceReflectivityLand (“模型”,“ConstantGamma”,“伽马”,gammaDB);landSurface(场景,“RadarReflectivity”,反射);

现在定义雷达平台。上面的平台将开始4公里原点,和飞在200 m / s + Y方向。设置平台定位的平台框架X是与运动的方向一致。雷达上指定的安装角度,这意味着雷达将指出+ X方向。

高度= 4 e3;rdrpos =[0 0高度];rdrspd = 200;rdrtraj = kinematicTrajectory (“位置”rdrpos,“速度”(0 rdrspd 0),“定位”rotz (90)。');rdrplat =平台(场景,“传感器”rdr,“轨迹”,rdrtraj);

下图显示了一个可视化的场景几何,包括均匀地表。

BroadsideGeom.png

把目标表面上沿雷达瞄准线的方向。可以找到所需的地面范围从雷达高度角和抑郁。

gndrng =高度/罐内(mountingYPR (2));tgtpos = (gndrng 0 0);

选择目标的RCS,返回的信号将被埋在杂波多普勒分离。通过计算近似RCS杂乱的侧向range-Doppler分辨单元,然后设定目标RCS的四分之一。前面定义的反射率模型可以用来获取nrc,和近似区域的分辨单元可以找到与所提供的helper函数。表达在dBsm RCS。

clutterCellNRCS =反射(mountingYPR (2), fc);clutterCellArea = helperBroadsideResCellArea(管理员、rangeRateRes gndrng, mountingYPR (2), rdrspd);clutterCellRCS = clutterCellNRCS * clutterCellArea;tgtrcs = clutterCellRCS / 4;tgtrcs = 10 * log10 (tgtrcs);

计算后的预期目标的信噪比比较结果检测的信噪比。的RadarLoopGain财产的雷达目标RCS的关系,范围和信噪比。

tgtrng =√高度^ 2 + gndrng ^ 2);tgtsnr = tgtrcs - 40 * log10 (tgtrng) + rdr.RadarLoopGain
tgtsnr = 32.3399

使用场景平台方法来创建一个固定目标平台,并将其添加到场景。的rcsSignature类可用于定义一个constant-RCS签名用一个标量RCS值模式财产。

tgtplat =平台(场景,“位置”tgtpos,“签名”rcsSignature (“模式”tgtrcs));

现在,使用场景clutterGenerator方法构建一个对你的雷达杂波发生器,使杂乱的一代。的决议属性定义了杂乱的名义间距补丁。设置这个距离分辨率的1/5th得到多个杂乱补丁每门范围。设置限制20公里范围涵盖整个梁。UseBeam表明如果杂乱一代应该执行自动的mainlobe天线模式,或视野的radarDataGenerator定义的FieldOfView财产。

rdr clut = clutterGenerator(场景,“决议”管理员/ 5,“RangeLimit”,20 e3,“UseBeam”,真正的);

现在的模拟是完全配置。单帧的模拟运行,收集探测雷达的你了。可以通过调用场景检测方法。

依据=检测(现场);

检查这些检测。

依据{1}
ans = objectDetection属性:时间:0测量:[6×1双]MeasurementNoise:[6×6双]SensorIndex: 1 ObjectClassID: 0 ObjectClassParameters: [] MeasurementParameters: [1×1 struct] ObjectAttributes: {[1×1 struct]}

每一个objectDetection包含信息检测在一个特定的分辨单元。的测量属性将位置和速度的检测场景坐标,和SensorIndex指的是索引分配radarDataGenerator在建设。可以找到有用的元数据的内容进行检查ObjectAttributes财产。

依据{1}.ObjectAttributes {1}
ans =结构体字段:TargetIndex: 14信噪比:38.8084

TargetIndex场提供的索引生成目标检测。如果相同的分辨单元内多个目标下跌,这将是该指数的目标细胞最大的信号功率。这个索引对应PlatformID属性的目标平台。这个ID分配时自动创建一个平台,和增量1随着每一个新的平台。在模拟杂波时,目标指数的数量可能超过平台添加到场景中,这表明检测来自一个分辨单元杂乱返回占主导地位。

上面所示的低信噪比的第一个发现是由于排序输出radarDataGenerator。视野内的雷达杂波功率细胞偏低的范围比中心片较小,与地面雷达瞄准线的交点附近的飞机,目标平台的位置。画出信噪比所有杂物检测来验证杂波功率的统计数据。

helperPlotDetectionSNR(检波器)标题(的杂波检测信噪比)

不同的行对应于不同的多普勒垃圾箱。平均信噪比0 Hz的检测多普勒本(对应更高的趋势线)比目标信噪比,高6 dB。

因为感兴趣的目标平台是第二个平台添加到场景中,它将有一个ID为2。

tgtplat.PlatformID
ans = 2

这个可以用来找到相对应的对象检测到目标平台,如果目标被检测到。得到了TargetIndex在所有检测,看看是否对应于目标平台的ID。

tgtidx = cellfun (@ (t) t.ObjectAttributes {1} .TargetIndex,依据);tgtdet =检波器(tgtidx = = tgtplat.PlatformID);detectedPlatform = ~ isempty (tgtdet)
detectedPlatform =逻辑0

在这个场景中,目标平台没有发现因为目标返回信号的分辨单元一样杂乱。使用提供的helper函数画一个可视化的目标和杂波补丁range-Doppler空间的覆盖多普勒分辨率细胞的边界。

helperPlotRangeDoppler (clut rdrplat tgtplat,λ,脉冲重复频率,dopRes)

自目标被沿着天线孔径和表面上是静止的,它出现在range-Doppler空间中同一点的质心mainlobe杂乱,检测不到。

移动的目标

现在您将计算速度矢量的目标所以它沿着表面向雷达(- x方向的)速度,返回的信号将会外的杂波多普勒返回。

首先计算出总mainlobe杂乱的数据传播的回报。这个方程是有效侧向杂波,天线孔径向量是垂直于雷达速度。

clutSpread = 2 * rdrspd *信德(波束宽度/ 2);

计算所需的关闭速度,目标是一个外部的多普勒分辨单元mainlobe杂乱的回报。也算所需的总速度,可以发现除以X分量的大小在雷达视线的位置。

洛杉矶= (rdrpos - tgtpos) / tgtrng;tgtClosingRate = clutSpread / 2 + rangeRateRes;tgtspd = tgtClosingRate / abs(洛(1));

设置目标轨迹速度通过访问平台,这是一个kinematicTrajectory默认情况下。

tgtplat.Trajectory。速度= (-tgtspd 0 0);

运行仿真框架。

依据=检测(现场);

再次,每个检测和搜索的目标指数相对应的目标平台。

tgtidx = cellfun (@ (t) t.ObjectAttributes {1} .TargetIndex,依据);tgtdet =检波器(tgtidx = = tgtplat.PlatformID);detectedPlatform = ~ isempty (tgtdet)
detectedPlatform =逻辑0

这一次,目标检测。检查测量位置和对象属性的目标检测。

如果detectedPlatform tgtdet {1} .Measurement (1:3) tgtdet {1} .ObjectAttributes {:}结束

测量目标位置精确到几米,和报告的信噪比是发现早期通过雷达环路增益。

查看返回range-Doppler空间。

helperPlotRangeDoppler (clut rdrplat tgtplat,λ,脉冲重复频率,dopRes)

目标回报的多普勒频率是多普勒分辨率细胞大于最大mainlobe杂波的多普勒回来了。尽管小目标相对杂乱的RCS,可由于多普勒检测到分离。

检测表面目标地形的存在

地形杂乱和遮挡

再次在这一节中,您将构建一个雷达场景和检查目标检测能力的杂乱。这一次您将使用地形数据将目标表面上,产生杂乱的回报,模拟视距雷达和目标之间的遮挡关系。

首先加载示例地形数据。它包含的变量地形边界,它将被传递到landSurface方法。

负载MountainousTerrain.mat

创建场景。使用landSurface方法定义一个矩形区域的地形高度样本通过指定一个矩阵和的边界地区两点形式。

现场= radarScenario (“UpdateRate”0,“IsEarthCentered”、假);srf = landSurface(场景,“RadarReflectivity”,反射,“地形”、地形、“边界”、边界);

地形数据覆盖地区约23公里在X方向上,在Y方向上17公里。这可以被检查边界财产。

srf.Boundary
ans =2×2104×0 2.2920 -0.8544 0.8544

上面的雷达将再次被放置的起源而查看目标平台沿着表面向+ X方向的雷达。重新创建雷达平台,这一次使用高度面对象的方法把雷达地面在同一高度之前使用。

rdrpos(3) =身高(srf, rdrpos) +高度;rdrtraj = kinematicTrajectory (“位置”rdrpos,“速度”(0 rdrspd 0),“定位”rotz (90)。');rdrplat =平台(场景,“传感器”rdr,“轨迹”,rdrtraj);

重建目标平台,使用高度方法将表面的目标平台。

tgtpos(3) =身高(srf, tgtpos);tgttraj = kinematicTrajectory (“位置”tgtpos,“速度”[-tgtspd 0 0]);tgtplat =平台(场景,“轨迹”tgttraj,“签名”rcsSignature (“模式”tgtrcs));

使混乱的一代。这一次,由于地形数据使用,决议属性是不相关的。杂乱的补丁将地形数据的对应面。

rdr clut = clutterGenerator(场景,“RangeLimit”,20 e3,“UseBeam”,真正的);

杂乱的实际间距补丁在X和Y方向上可以找到除以每个方向的表面高度的数量样品。注意,X和Y方向矩阵的定义高度采样meshgrid公约后,第一个维度的矩阵(列)对应于Y和第二个维度(行)X。

terrainClutterSpacing = diff(边界,1,2)。/翻转(大小(地形))。
terrainClutterSpacing =2×129.9608 - 25.6188

地形数据采样分辨率25到30米,这就足以产生一些混乱补丁每个分辨单元。

收集一帧的检测。

依据=检测(现场);

由于目标运动速度矢量和以前相同,目标平台的检测可能的预期。情节混乱补丁和目标在range-Doppler空间再次验证。

helperPlotRangeDoppler (clut rdrplat tgtplat,λ,脉冲重复频率,dopRes)

请注意,这一次,目标是分开距离和多普勒杂波。注意到杂物返回比在平地上的情况下近距离约3公里。杂物多普勒的整体程度都是一样的因为这只取决于波束宽度,不是表面的形状。

检查一个对象检测生成对应于目标平台。

tgtidx = cellfun (@ (t) t.ObjectAttributes {1} .TargetIndex,依据);tgtdet =检波器(tgtidx = = tgtplat.PlatformID);detectedPlatform = ~ isempty (tgtdet)
detectedPlatform =逻辑0

目标没有检测到。情节场景概述原因,调整视图所以地形的影响可以更容易看到。

helperPlotClutterScenario(场景)组(gca,“视图”,-115年[22])

这里使用的相同的几何参数的均匀表面场景。目标仍然是直接沿着天线孔径,但mainlobe相交区域的地形比目标在一个较低的范围。目标由地形,从而阻挡不检测。洛杉矶的阻塞可以显式地检查到目标通过使用闭塞方法从表面上看对象。这种方法将两个点作为输入,并指出它们之间的洛杉矶是否阻挡的表面。可以直接通过这个平台位置。

锢囚=闭塞(srf, rdrplat.Position tgtplat.Position)
锢囚=逻辑1

这个验证的观察场景情节概述雷达的目标是阻挡的地形。

表面场景中的对象是由一个表面的经理,这可以通过访问SurfaceManager财产的场景。检查这个属性。

scene.SurfaceManager
ans = SurfaceManager属性:UseOcclusion: 1表面:[1×1 radar.scenario.LandSurface]

管理器包含一个只读矢量表面的物体出现在场景中,和一个逻辑指标,可用于启用/禁用视线遮挡表面特征。现在尝试禁用,收集检测框架,和检查目标平台检测。

scene.SurfaceManager。UseOcclusion = false;依据=检测(现场);tgtidx = cellfun (@ (t) t.ObjectAttributes {1} .TargetIndex,依据);tgtdet =检波器(tgtidx = = tgtplat.PlatformID);detectedPlatform = ~ isempty (tgtdet)
detectedPlatform =逻辑1

与表面阻塞残疾,可检测平台。

模拟多个表面目标

下一节中,您将多个平台随机位置表面上和模拟检测,观察地形遮挡,包括自动作为场景的一部分检测方法。杂乱检测将不会在这里为了简化模拟仿真和突出地形闭塞效应(也就是说,假设所有目标雷达探测,因为他们是可见的)。包括从杂波干扰,clutterGenerator方法可以作为之前,尽管目标需要在运动或有大量RCS签名可以被探测到。

重新创建的场景中,使用相同的地形数据。

现场= radarScenario (“UpdateRate”0,“IsEarthCentered”、假);srf = landSurface(场景,“RadarReflectivity”,反射,“地形”、地形、“边界”、边界);

释放雷达对象,以便它可以重新配置。使用相同的视野,使电子扫描在海拔90度方位和16度,以覆盖大部分的表面。所有的目标都将照亮的一个完整的扫描。

释放(rdr)”。ScanMode =“电子”;rdr。ElectronicAzimuthLimits = 45 [-45];rdr。ElectronicElevationLimits = [8];

修改上面创建的轨迹将雷达平台在一个角落里的地形数据加载。相同的直线轨迹将重用。设置场景中根据需要停止时间给雷达时间从地形的一端到另一端,在Y方向上。这将允许视线的一些目标,从而阻挡和之间的过渡。

rdrtraj.Position(2) =边界(2,1);rdrplat =平台(场景,“传感器”rdr,“轨迹”,rdrtraj);现场。:StopTime = diff (srf.Boundary (2)) / rdrspd;

地方表面随机目标位置。最小值的位置选择在X方向上,使所有目标将视野内的雷达在扫描。目标是在Y方向上均匀分布,以及高度方法是用来把它们表面上。

numtgt = 14;tgtpos (1,1: numtgt) = 1 e4 +兰德(numtgt) * (srf.Boundary (1、2) - 1 e4);tgtpos (2) = srf.Boundary(2, 1) +兰德(numtgt) * diff (srf.Boundary (2:), 1, 2);tgtpos(3) =身高(srf, tgtpos);印第安纳州= 1:numtgt平台(场景,“位置”tgtpos(:印第安纳州)。');结束

仿真循环的每次迭代构成一个扫描的位置。第二个场景的输出检测方法,配置,返回的一些配置信息radarDataGenerator生产检测。的IsScanDone字段是一个逻辑标量最终表明如果雷达扫描位置最后调用检测。每一个扫描位置的检测将被保存和扫描模式完成时,闭塞状态和结果的可视化检测将被绘制。

图;p =得到(gcf“位置”);集(gcf,“位置”[p (1:2) 2 * p (3:4)]) fullScanDets = [];推进(场景)[引爆器,配置]=检测(现场);fullScanDets = [fullScanDets;依据);如果配置。IsScanDone helperPlotOcclusions(场景,fullScanDets) drawnow fullScanDets = [];结束结束

下面的gif动画显示了结果。因为所有可见的目标是阐明在一个完整的扫描,检测都是只要一个目标是可见的,而目标阻挡线没有检测到的景象。

occlusions.gif

结论

在本例中,您看到了如何配置一个radarScenarioradarDataGenerator模拟检测目标表面的混乱。你使用一个ClutterGenerator用一个简单的均匀表面检查的影响多普勒分离,然后用地形数据模拟的影响视线遮挡检测能力。

金宝app支持功能

helperBroadsideResCellArea

函数= helperBroadsideResCellArea (ranger rangeRateRes groundRange,放牧,速度)%计算近似区域的侧向range-Doppler决议%的细胞%地面距离分辨率groundRangeRes =管理员/ cosd(吃);%侧向角变化对应于多普勒分辨率dtheta = 2 *最佳(rangeRateRes /(2 *速度));%乘以地面范围横向距离范围crossRangeWidth = groundRange * dtheta;%细胞区= crossRangeWidth * groundRangeRes;结束

helperPlotDetectionSNR

函数helperPlotDetectionSNR(依据)%画一组objectDetections的信噪比detsnr = cellfun (@ (t) t.ObjectAttributes {1} .SNR,依据);情节(detsnr“。”网格)包含(“检测指数”)ylabel (“信噪比(dB)”)结束

helperPlotRangeDoppler

函数helperPlotRangeDoppler (clut rdrplat tgtplat,λ,脉冲重复频率,dopRes)%情节杂乱的range-Doppler真理补丁和目标,以及%的多普勒分辨率边缘的细胞。%目标距离和多普勒洛杉矶= rdrplat。位置- tgtplat.Position;tgtRange =规范(los);洛杉矶=洛杉矶/ tgtRange;tgtDoppler = 2 /λ* ((tgtplat.Trajectory.Velocity-rdrplat.Trajectory.Velocity)。*洛)总和;%得到距离和多普勒杂波补丁补丁= clut.LastPatchData.Centers;洛杉矶=补丁- rdrplat.Position (:);clutterRange =√总和(洛杉矶。^ 2,1));洛杉矶=洛杉矶。/ clutterRange;clutterDoppler = 2 /λ*总和(rdrplat.Trajectory.Velocity(:)。*洛,1);%的阴谋range-Doppler空间中杂波和目标情节(clutterDoppler clutterRange e3 / 1,“。”,“markersize”,1。)情节(tgtDoppler tgtRange e3 / 1,“* r”,“markersize”15)%画出多普勒本边缘xl = xlim;yl = ylim;dopBins =脉冲重复频率/ 2:dopRes:(脉冲/ 2-dopRes);dopBinEdges = [dopBins (1) -dopRes / 2, dopBins + dopRes / 2);dopBinEdges = dopBinEdges (dopBinEdges > = xl (1) & dopBinEdges < = xl (2));线([1]。* dopBinEdges repmat (yl、元素个数(dopBinEdges) 1)。’,“颜色”,“红色”,“线型”,“——”)举行传奇(“杂乱补丁”,“目标”,“多普勒本边缘”,“位置”,“西北”)包含(“多普勒(Hz)”)ylabel (的距离(公里))结束

helperPlotOcclusions

函数helperPlotOcclusions(现场,依据)%绘制场景随着目标和雷达位置和表面%的视线,彩色编码显示阻塞状态%的视线。任何检测的位置。%画出表面helperPlotScenarioSurface (scene.SurfaceManager.Surfaces (1))%发现雷达平台和获取当前位置公寓= [scene.Platforms {}):;hasSensor = ~ cellfun (@isempty {plats.Sensors});rdrplat =公寓(找到(hasSensor, 1));rdrpos = rdrplat.sensorPosition (1);%目标平台tgtplats =公寓(公寓~ = rdrplat);印第安纳州= 1:元素个数(tgtplats)%为每个目标%的当前目标tgtpos = tgtplats(印第安纳州).Position;hndls (1) = plot3 (tgtpos (1) tgtpos (2), tgtpos (3),“oblue”,“MarkerSize”10);%闭塞状态通过查询场景表面经理occ =闭塞(scene.SurfaceManager rdrpos、tgtpos scene.SimulationTime);%绘制彩色的视线如果occ hndls(2) =线([rdrpos (1) tgtpos (1)]、[rdrpos (2) tgtpos (2)]、[rdrpos (3) tgtpos (3)),“颜色”,“红色”);其他的hndls(3) =线([rdrpos (1) tgtpos (1)]、[rdrpos (2) tgtpos (2)]、[rdrpos (3) tgtpos (3)),“颜色”,“绿色”);结束结束%只保留检测来自目标平台tgtidx = cellfun (@ (t) t.ObjectAttributes {1} .TargetIndex,依据);targetDetection =任何(tgtidx = = [plats.PlatformID], 2);依据=检波器(targetDetection);%绘制检测如果~ isempty(检波器)detpos = cell2mat (cellfun (@ (t) t.Measurement(1:3),精细。”“UniformOutput”,0));:plot3 (detpos (1), detpos (2:), detpos (3:)“omagenta”,“MarkerSize”9“MarkerFaceColor”,“红色”);结束持有legendstr = [“目标位置”“锢囚洛杉矶”“未遮挡洛”“检测位置”];I = ishghandle (hndls);hndls = hndls(我);legendstr = legendstr(我);传奇(hndls legendstr,“位置”,“西北”);标题(sprintf (“模拟时间:% .4f”,scene.SimulationTime))视图([120]28日)结束