这个例子展示了如何建模和模拟主动和被动雷达传感器的输出radarDataGenerator
。在本例中,您将观察射频(RF)干扰如何影响雷达的探测性能。此外,您可以使用无源雷达传感器来估计射频干扰的位置和类型。
评估雷达的跟踪性能需要对射频(RF)场景进行建模。建模流程如下:
产生射频辐射。
从平台传播和反射这些排放。
接收发射,计算干扰损失,并产生检测。
在本例中,您使用由三个平台组成的场景执行以下每个步骤:
空中平台以500公里/小时的速度从场景底部向北飞行
空中平台以600公里/小时的速度从场景顶部向南飞行
空中平台以700公里/小时的速度向东飞行
首先,创建场景并设置场景持续时间,然后创建三个机载平台。
scene = radarScenario;现场。停止时间= 10;% s1号站台:空降,以每小时500公里的速度向北飞行SPD = 500*1e3/3600;% m / sWp1 = [0 0 -6000];Wp2 = [spd*scene.]停止时间0 -6000];Toa = [0;scene.StopTime];平台(场景,“轨迹”waypointTrajectory (“锚点”, (wp1;wp2),“TimeOfArrival”toa));第二站台:空降,时速600公里向南飞行SPD = 600*1e3/3600;% m / sWp1 = [30e3+spd*scene]停止时间0 -6000];Wp2 = [30e3 0 -6000];Toa = [0;scene.StopTime];平台(场景,“轨迹”waypointTrajectory (“锚点”, (wp1;wp2),“TimeOfArrival”toa));3号站台:空中向东飞行,时速700公里SPD = 700*1e3/3600;% m / sWp1 = [10e3 1e3 -6000];Wp2 = [10e3 1e3+spd*scene]StopTime -6000);Toa = [0;scene.StopTime];平台(场景,“轨迹”waypointTrajectory (“锚点”, (wp1;wp2),“TimeOfArrival”toa));
使用theaterPlot
创建一个显示场景中的平台及其轨迹的显示器。
Ax =坐标轴;theaterDisplay =“父”ax,“AxesUnit”, (“公里”“公里”“公里”],“XLim”,[-10000 40000],“YLim”, [-20000 20000],“ZLim”(1) e7 1 e7));视图(-90 [90])%交换X和Y轴补丁(“XData”,[-10000 -10000 40000 40000],“YData”,[-20000 20000 20000 20000 -20000],“EdgeColor”,“没有”,“FaceColor”,[0.8 0.8 0.8],“DisplayName的”,“地面”);platPlotter = platformPlotter(“DisplayName的”,“平台”,“MarkerFaceColor”,“k”);plotPlatform (platPlotter vertcat (scene.platformPoses.Position));trackplotter =轨迹绘图仪(theaterDisplay,“DisplayName的”,“轨迹”,“线型”,“- - -”);allTrajectories = cellfun(@(x) x. trajectory . lookuppose (linspace(0,scene. stoptime,10)), scene。平台,“UniformOutput”、假);plotTrajectory (trajPlotter allTrajectories);
通常,雷达工作在其他不希望的射频发射干扰雷达发射的波形的环境中。当这种情况发生时,雷达在干扰信号方向的探测性能下降。将射频发射器连接到场景底部的平台(第一个平台),并将雷达连接到场景顶部的平台(第二个平台)。
创建射频发射器
对射频发射进行建模radarEmitter
对象。发射器采用前视配置,方位视野为20度,包括场景中的另外两个平台。有效各向同性辐射功率(EIRP)决定了干扰信号的强度。波形类型是一个用户定义的值,用于枚举场景中出现的各种波形类型。对于此场景,使用值0表示噪声波形类型。
创建干扰发射器。rfEmitter = radarEmitter(1,“没有扫描”,…“FieldOfView”20 [5],…% [z]度“附近”, 200,…% dBi“CenterFrequency”300 e6,…%赫兹“带宽”, 30 e6,…%赫兹“WaveformType”, 0)%对噪音排放使用0
rfEmitter = radarEmitter with properties: EmitterIndex: 1 update: 1 ScanMode: 'No scanning' MountingLocation: [0 00] MountingAngles: [0 00] FieldOfView: [2x1 double] MechanicalAngle: 0 LookAngle: 0 HasElevation: 0 EIRP: 200 CenterFrequency: 300000000 Bandwidth: 30000000 WaveformType: 0 ProcessingGain: 0
将发射器连接到第一个平台。
platEmit = scene.Platforms{1};platEmit。发射器= rfEmitter
platEmit =平台属性:PlatformID: 1 ClassID: 0位置:[0 0 -6000]方向:[0 00]尺寸:[1x1 struct]轨迹:[1x1 waypointTrajectory] PoseEstimator: [1x1 insSensor]发射器:{[1x1 radarEmitter]}传感器:{}签名:{[1x1 rcsSignature]}
创建单站雷达
为第二平台装备单站雷达。使用radarDataGenerator
来模拟这种雷达。首先,创建单站雷达使用radarDataGenerator
。配置雷达的安装方向,使其扫描其平台前面的方位角扇区。启用INS输入,以便雷达可以使用平台的姿态估计器在场景坐标中输出检测结果。使能干扰输入端口,使上述发射器产生的干扰信号可以传递到雷达。
雷达= radarDataGenerator(2,“部门”,…“DetectionMode”,“单站”,…“UpdateRate”, 12.5,…%赫兹“FieldOfView”, [2 10]);% [z]度雷达。MountingAngles = [0 0 0];% [Z Y X]度雷达。HasINS = true;雷达。InterferenceInputPort = true;雷达。DetectionCoordinates =“场景”
radar = radarDataGenerator with properties: SensorIndex: 2 UpdateRate: 12.5000 DetectionMode: 'Monostatic' ScanMode: 'Mechanical' InterferenceInputPort: 1 EmissionsInputPort: 0 MountingLocation: [0 00] MountingAngles: [0 00] FieldOfView: [2 10] RangeLimits: [0 100000] DetectionProbability: 0.9000 FalseAlarmRate: 1.0000e-06 ReferenceRange: 100000 TargetReportFormat: 'Clustered detection '显示所有属性
把雷达接到第二个平台。
platRadar = scene.Platforms{2};platRadar。传感器=雷达;
更新显示以显示场景中的平台、雷达和发射器。
emitterColor = [0.9290 0.6940 0.1250];radarColor = [0 0.4470 0.7410];platEmitPlotter = platformPlotter(“DisplayName的”,“射频发射器”,“标记”,' d ',“MarkerFaceColor”, emitterColor);platRadarPlotter = platformPlotter(“DisplayName的”,“单站雷达”,“标记”,' d ',“MarkerFaceColor”, radarColor);platPlotter。DisplayName =“目标”;clearData (platPlotter);covPlotter = coveragePlotter(“α”, 0.2 [0]);detPlotter = detectionPlotter(“DisplayName的”,雷达信号检测的,“MarkerFaceColor”, radarColor);标题(“使用干扰发射器的雷达探测”);plotPlatform (platRadarPlotter platRadar.pose.Position);plotPlatform (platEmitPlotter platEmit.pose.Position);plotPlatform (platPlotter scene.Platforms {3} .pose.Position);plotCoverage(covPlotter, coverageConfig(scene), [-1 2], {emitterColor, radarColor});
在上图中,搭载前视雷达的平台为蓝色菱形,雷达当前视场为源自平台的蓝色区域。在图的底部,携带干扰射频发射的平台显示为黄色菱形,发射器的电流视场为对应的黄色区域。没有任何发射器或传感器的平台被称为目标并显示为黑色三角形。
模拟单静态检测
在多速率场景中,您可以找到一个更新速率,它是场景中定义的所有传感器和发射器速率的共同分除器,或者您可以使用连续更新,当您调用时,它会自动将场景推进到下一个有效更新时间推进
。
现场。UpdateRate = 0
scene = radarScenario with properties: isearthcentric: 0 UpdateRate: 0 SimulationTime: 0 StopTime: 10 SimulationStatus: NotStarted Platforms: {1x3 cell}
对于下面循环中的每一步,使用:
推进
根据它们的轨迹移动所有的平台。
发出
更新来自。的发射方向platEmit
。
传播
将发射直接传播到位于发射器视场内的场景中的每个平台。接收直接路径发射的每个平台都会生成单次反弹反射,该反射也会作为反射发射传播到每个其他平台。
检测
从接收到的辐射产生探测platRadar
。
下图显示了从发射器到雷达传感器的发射传播。
设置可重复结果的随机种子。rng (2018);plotDets = {};而推进(场景)%发射射频信号。txEmiss = emit(scene);%反射场景中平台发出的信号。reflEmiss = propagate(scene, txEmiss);%从单站雷达传感器生成检测。[dets, config] = detect(scene, reflEmiss);%每次雷达完成扇区扫描时复位检测。如果配置。IsScanDone%重置plotDets = dets;其他的%的缓冲plotDets = [plotDets;det];% #好< AGROW >结束更新显示当前平台位置,波束位置和检测。plotPlatform (platRadarPlotter platRadar.pose.Position);plotPlatform (platEmitPlotter platEmit.pose.Position);plotPlatform (platPlotter scene.Platforms {3} .pose.Position);plotCoverage(covPlotter, coverageConfig(scene), [-1 2], {emitterColor, radarColor});如果~isempty(plotDets) allDets = [plotDets{:}];%提取测量位置的列向量= [alldt . measurement]';plotDetection (detPlotter量);结束结束
从上图中可以看出,雷达(蓝色部分)只能探测到场景中间的目标。当雷达的视场(即波束宽度)扫过目标时,探测结果显示为蓝色填充的圆圈。然而,当雷达的波束扫过发射平台(黄色所示)时,由于该平台产生的干扰阻止了雷达的探测,因此不会产生探测。
在上一节中,雷达无法探测到发射平台的位置,因为该平台的发射掩盖了雷达自身的发射。然而,这种强烈的发射可以通过侦听射频发射的无源传感器检测和识别。这些传感器通常被称为电子支持措施(ESM)。金宝app这些传感器通常在广泛的频率范围内监听,并试图识别唯一的发射器,这些发射器的发射到达的方向,只要可能,发射器使用的波形类型。
创建ESM传感器
重用上一节的场景,但将第一个平台上的单站雷达替换为ESM传感器。使用radarDataGenerator
对ESM传感器进行建模,并确保传感器的配置使其中心频率和带宽包括发射器的射频频谱。否则,它将无法探测到发射器。
重启(现场);esm = radarDataGenerator(1,“没有扫描”,…“DetectionMode”,ESM的,…“UpdateRate”, 12.5,…%赫兹“MountingAngles”,[0 0 0],…% [Z Y X]度“FieldOfView”30 [10],…% [z]度“CenterFrequency”300 e6,…%赫兹“带宽”, 30 e6,…%赫兹“WaveformTypes”0,…%检测干扰波形类型“之内”,真正的)
esm = radarDataGenerator with properties: SensorIndex: 1 EmitterIndex: 1 UpdateRate: 12.5000 DetectionMode: ' esm ' ScanMode: 'No scanning' MountingLocation: [0 00] MountingAngles: [0 00] FieldOfView: [30 10] FalseAlarmRate: 1.0000e-06显示所有属性
将第二平台的雷达更换为ESM传感器。
platESM = scene.Platforms{2};platESM。传感器= esm;
相应地更新可视化。
platRadarPlotter。DisplayName =“ESM传感器”;esmColor = [0.4940 0.1840 0.5560];platRadarPlotter。MarkerFaceColor = esmColor;使用辅助程序添加一个只检测角度的绘图仪删除(detPlotter);esmDetPlotter = helperAngleOnlyDetectionPlotter(“DisplayName的”,“ESM检测”,“颜色”esmColor,“线型”,“- - -”);clearData (covPlotter);plotCoverage(covPlotter, coverageConfig(scene), [-1 1], {emitterColor, esmColor});标题(“射频发射被动检测”);
在上图中,雷达被安装在第二个平台上的ESM传感器所取代。ESM传感器的视场显示为洋红色,包括发射平台和目标平台。
模拟ESM检测
现在用ESM传感器代替雷达模拟探测。请注意,由于ESM传感器是被动传感器,因此它无法定位发射平台,但可以指示平台发射的到达方向。这些只有角度的探测显示为从ESM传感器向发射平台发出的射线。
设置可重复结果的随机种子。rng (2018);plotDets = {};Snap = [];而推进(场景)%发射射频信号。txEmiss = emit(scene);%反射场景中平台发出的信号。reflEmiss = propagate(scene, txEmiss);%从ESM传感器生成检测。[dets, config] = detect(scene, reflEmiss);%每次雷达完成扇区扫描时复位检测。如果配置。IsScanDone%重置plotDets = dets;其他的%的缓冲plotDets = [plotDets;det];% #好< AGROW >结束更新显示当前平台位置,波束位置和检测。plotPlatform (platRadarPlotter platRadar.pose.Position);plotPlatform (platEmitPlotter platEmit.pose.Position);plotPlatform (platPlotter scene.Platforms {3} .pose.Position);plotCoverage(covPlotter, coverageConfig(scene), [-1 1], {emitterColor, esmColor});plotDetection (esmDetPlotter plotDets);记录t = 2秒时的反射检测。snap = getSnap(ax, scene。SimulationTime, 2, snap);drawnow结束标题(由ESM传感器检测到的射频发射器);
ESM传感器检测射频发射并估计其到达方向。这个估计由源自传感器并紧密通过发射器的洋红色线表示。角度估计是有噪声的,这就是为什么线没有直接通过发射器的位置。
ESM传感器在其报告的检测中对波形类型进行分类。对于这个发射器,它报告发射器使用的噪声波形类型:0。
依据{1}。ObjectAttributes {1}
ans =带有字段的结构体:TargetIndex: 1 EmitterIndex: 1 WaveformType: 0信噪比:184.8224
注意,传感器检测到的发射信号的信噪比(SNR)非常大,为185 dB。由于射频发射器具有高功率,因此ESM传感器也可以检测到目标发射波形的反射。这是在模拟开始2秒时看到的,此时目标位于发射器的视场内。
图;imshow (snap.cdata);标题(“ESM传感器检测到的发射器和目标”);
前面的图显示了从发射器和目标都检测到的发射,因为目标从发射器接收能量并将波形重新发射回场景,导致它也被ESM传感器检测到。
单站雷达也发射波形到场景中。有时需要对这些排放物进行被动探测。为此,必须分别对雷达的发射和传感部分进行建模。发射器产生的波形成为场景射频发射的一部分。然后,这些波形可以被其他传感器检测到,比如ESM传感器。
重用之前的相同场景。对于该方案,将单站雷达附加到方案顶部的平台(第二个平台),并将ESM传感器附加到方案底部的平台(第一个平台)。中间平台仍然是一个目标,没有附加发射器或传感器。
重启(现场);
通过对传感器的发射和传感部分进行建模,创建一个单站雷达。使用radarEmitter
对单站雷达辐射源进行建模。在此场景中,使用1表示该雷达使用的波形类型。波形类型是由用户定义的枚举,用于表示场景中模拟的不同类型的波形。波形枚举使发射器和传感器知道如何处理这些波形以产生检测。例如,如果发射器的波形类型为1,并且传感器将其包含在其波形列表中,则传感器知道如何处理发射器的发射(例如,使用匹配的滤波器)并实现与该波形相关的处理增益。
创建单站雷达的发射器。radarTx = radarEmitter(2,“部门”,…“UpdateRate”, 12.5,…%赫兹“MountingAngles”,[0 0 0],…% [Z Y X]度“FieldOfView”, 10 [2],…% [z]度“CenterFrequency”300 e6,…%赫兹“带宽”, 3 e6,…%赫兹“ProcessingGain”, 50岁,…% dB“WaveformType”, 1)使用1表示该雷达的波形。
radarTx = radarEmitter with properties: EmitterIndex: 2 update: 12.5000 ScanMode: 'Mechanical' MountingLocation: [0 00] MountingAngles: [0 00] FieldOfView: [2x1 double] MaxMechanicalScanRate: 75 MechanicalScanLimits: [-45 45] MechanicalAngle: 0 LookAngle: 0 HasElevation: 0 EIRP: 100 CenterFrequency: 300000000 Bandwidth: 3000000 WaveformType: 1 ProcessingGain: 50
使用radarDataGenerator
对该方案中接收射频发射的雷达传感部分进行建模,识别与单站发射器的波形类型相对应的发射,并从这些接收到的发射中生成检测。与发射器波形类型不匹配的发射被视为干扰。
当使用radarDataGenerator
要对单站雷达的传感部分进行建模,请设置DetectionMode
传感器的属性单站
。这告诉传感器在处理接收到的射频发射时使用发射器的配置。的EmissionsInputPort
属性也必须设置为true以启用检测radarEmission
对象。
radarx = radarDataGenerator(2,…“DetectionMode”,“单站”,…“EmissionsInputPort”,真的,…“EmitterIndex”, radarTx。EmitterIndex,…“之内”,真的,…“DetectionCoordinates”,“场景”)
radarRx = radarDataGenerator with properties: SensorIndex: 2 EmitterIndex: 2 DetectionMode: 'Monostatic' InterferenceInputPort: 0 EmissionsInputPort: 1 RangeLimits: [0 100000] FalseAlarmRate: 1.0000e-06显示所有属性
将雷达发射器和传感器连接到第二平台。
platRadar = scene.Platforms{2};platRadar。发射器= radarTx;platRadar。传感器= radarRx;
重复使用之前的ESM传感器,但将ESM传感器的已知波形类型列表设置为包括雷达发出的波形。如果ESM传感器不知道雷达的波形类型,它将不会被检测到。
%将雷达波形添加到ESM传感器的已知波形类型列表中。esm。WaveformTypes = [0 1];%将ESM传感器连接到第一个平台。platESM = scene.Platforms{1};platESM。发射器= {};%移除发射器。platESM。传感器= esm;
更新显示以显示单静态检测和ESM检测。
detPlotter = detectionPlotter(“DisplayName的”,雷达信号检测的,“MarkerFaceColor”, radarColor);platRadarPlotter。DisplayName =“单站雷达”;platRadarPlotter。MarkerFaceColor = radarColor;platEmitPlotter。DisplayName =“ESM传感器”;platEmitPlotter。MarkerFaceColor = esmColor;clearData (esmDetPlotter);clearData (covPlotter);covcon = coverageConfig(场景);plotCoverage(covPlotter, covcon([1 3]), [1 -2], {esmColor, radarColor});标题(ax,“单站雷达被动探测”);
上图显示了雷达扫描其平台前方的方位角扇形,其中包括目标平台和携带ESM传感器的平台。当雷达的视野(蓝色部分)扫过这两个平台的位置时,雷达会对它们进行探测。然而,当雷达的波束经过ESM传感器的位置时,ESM传感器检测到雷达,并通过从传感器开始绘制一条线来指示估计位置。
设置可重复结果的随机种子。rng (2018);平台= scene.Platforms;numPlat = numel(平台);plotDets = {};Snap = [];而推进(场景)%发射射频信号。[txEmiss, txConfigs] = emit(scene);%反射场景中平台发出的信号。reflEmiss = propagate(scene, txEmiss);%从传感器生成检测结果。[dets, config] = detect(scene, reflEmiss, txConfigs);%每次雷达完成扇区扫描时复位检测。如果txConfigs(结束)。IsScanDone%重置plotDets = dets;其他的%的缓冲plotDets = [plotDets;det];% #好< AGROW >结束更新显示当前平台位置,波束位置和检测。plotPlatform (platRadarPlotter platRadar.pose.Position);plotPlatform (platEmitPlotter platEmit.pose.Position);plotPlatform (platPlotter scene.Platforms {3} .pose.Position);covcon = coverageConfig(场景);plotCoverage(covPlotter, covcon([1 3]), [1 -2], {esmColor, radarColor});plotDetection (esmDetPlotter plotDets);plotMonostaticDetection (detPlotter plotDets);记录t = 5.6秒时的反射检测。snap = getSnap(ax, scene。SimulationTime, 5.6, snap);drawnow结束
单站雷达的探测采用radarEmitter
和radarDataGenerator
所示为填充的蓝色圆圈,靠近目标和装有ESM传感器的平台。ESM传感器也能够探测雷达,正如仅角度探测所示,从ESM传感器发出的一条线经过雷达平台附近。
图;imshow (snap.cdata);标题(ESM传感器探测到的雷达和目标);
由于雷达发射的高功率(EIRP),发射的能量被目标反射到ESM平台上。因此,当雷达发射器的视场扫过目标平台,而目标仍在ESM传感器的视场内时,ESM传感器检测到目标平台。
getSnap
在给定的快照时间记录轴的快照。
函数snap = getSnap(hAx, curTime, snapTime, prevSnap)如果~isempty(prevSnap) snap = prevSnap;elseifcurTime >= snapTime && curTime < snapTime + 0.05“关闭”;snap = getframe(hAx.Parent);hAx.Title.Visible =“上”;其他的Snap = [];结束结束
plotMonostaticDetection
解析检测以仅绘制单静态检测detectionPlotter
。
函数plotMonostaticDetection(绘图仪,依据)如果~ isempty(依据)只将单静态检测传递给检测绘图仪radarDetId = cellfun(@(x) x. sensorindex == 2, dets);如果任何(radarDetId)%提取单站雷达的测量位置radarDets = [dets{radarDetId}];= [radardt . measurement];plotDetection(绘图仪、量);结束结束结束