主要内容

在系统仿真中可视化雷达和目标轨迹

这个例子展示了如何使用场景查看器来可视化雷达系统战区。

介绍

雷达系统模拟通常包括许多移动物体。例如,雷达和目标都可以运动。此外,每个移动对象可能具有自己的方向,因此当在模拟中存在的更多玩家时,簿记变得越来越具有挑战性。

相控阵系统工具箱™提供了一个场景查看器,帮助可视化雷达和目标如何在空间中移动。通过场景查看器,可以跟踪每个移动平台的轨迹,并检查雷达和目标之间的相对运动。

想象的轨迹

在第一个示例中,场景查看器用于可视化雷达和目标的轨迹。假设雷达在3公里外的原点周围盘旋。这架装有雷达的飞机以250米/秒(约560英里/小时)的速度飞行,大约每60秒绕一圈。

v = 250;deltaPhi = 360/60;SensorMotion = phased.platform(......“InitialPosition”,[0; -3000; 500],......“VelocitySource”'输入端口'......“InitialVelocity”,[0; v; 0]);

目标是沿着沿X轴线的直线道路行进,速度为30m / s。这约为67英里/小时。

tgtmotion =分阶段。平台(“InitialPosition”,[0; 0; 0],......'速度', 30, 0, 0);

查看器设置为每0.1秒更新。对于最简单的情况,光束未在观看者中示出。

tau = 0.5;sceneview = phased.scenarioviewer(“ShowBeam”“没有”);

此代码模拟并显示雷达和目标的轨迹。

为了M = 1:tau:60 [sensorpos,sensorvel] = sensormotion......v * [cosd (m * deltaPhi);信德(m * deltaPhi); 0]);[tgtpos, tgtvel] = tgtmotion(τ);sceneview (sensorpos sensorvel、tgtpos tgtvel);drawnow;结束

可视化轨迹和雷达梁

下一个自然步骤是将雷达梁与观看者中的轨迹一起可视化。以下示例显示了如何可视化两个在空间中移动的雷达和三个目标。特别是。第一雷达具有跟踪第一目标的光束。

首先,设置雷达和目标。注意第一个雷达和第一个目标符合上一节中使用的匹配。

SensorMotion = phased.platform(......“InitialPosition”,[0 0;-3000 500;500 1],......“VelocitySource”'输入端口'......“InitialVelocity”,[0 100;v 0;0 0],......'Orientationaxesoutputport',真正的);tgtmotion =分阶段。平台(......“InitialPosition”,[0 200066 3532.63;0 0 500;0 500 500],......'速度',[30 120-120;0 0-20;0 0 60],......'Orientationaxesoutputport',真正的);

要正确指向光束,方案查看器需要了解雷达和目标的方向信息。可以通过在每个模拟步骤中将RioreationAdeOutputPort属性设置为True来从这些移动平台获得这样的信息,如上面的代码所示。要将此信息传递给查看器,请将方案查看器的RosentationInputPort属性设置为True。

sceneview = phased.scenarioviewer('beamrange'(3 e3 e3),......'beamwidth',[5 5],......“ShowBeam”“所有”......“CameraPerspective”“自定义”......“CameraPosition”, [-15453.85 -19716.96 13539],......'camericooination', [-47 -27 0],......“CameraViewAngle”, 11.28,......'OrientationInputport',真的,......'updaterate',1 / tau);

注意显示的光束具有5度的波束宽度,长度为3公里。还调整相机透视图以更清晰地显示所有轨迹。

为了m = 1:60 [SensorPos,SensorVel,Sensoraxis] = SensorMotion(Tau,......[v * [cosd(m * deltaphi); sind(m * deltaphi); 0] [100;0;0]]);[TGTPOS,TGTVEL,TGTAXIS] = TGTMOTION(TAU);%雷达1轨道目标1[lclrng, lclang] = rangeangle(tgtpos(:,1),sensorpos(:,1),......传感器(:,:1));更新波束方向sceneview。[lclang [0;0];];sceneview (sensorpos、sensorvel sensoraxis、tgtpos tgtvel, tgtaxis);drawnow;结束

系统仿真可视化

方案查看器也可以与其他可视化组合在一起,以提供在模拟下系统的更多信息。下一个示例使用方案查看器与范围时间强度(RTI)范围和多普勒时间强度(DTI)范围一起使用,因此工程师可以检查目标的估计范围和范围率是否与地面真理匹配。

该示例使用创建的雷达系统设计基本的单体脉冲雷达的例子。

负载BasicMonostaticRadarExampleData.mat

考虑有三个目标的场景。

FC =散热器。频繁;fs = waveform.samplerate;C =辐射器.Propagationspeed;SensorMotion = phased.platform(......“InitialPosition”, (0;0;10),......'速度', (0;0;0]);target = phased.radartarget(......“MeanRCS”(1.6 2.2 1.05),......'运行频率'、fc);tgtmotion =分阶段。平台(......“InitialPosition”,[2000.66 3532.63 3845.04;0 0 0; 10 10 10],......'速度',[120 -120 0;0 0 0;0 0 0]);channel = phased.freespace(......'采样率'fs,......“TwoWayPropagation”,真的,......'运行频率'、fc);

一旦回声到达接收器,匹配的滤波器和脉冲积分器就用于执行范围估计。

matchingcoeff = getMatchedFilter(波形);matchingdelay =大小(matchingcoeff, 1) 1;matchedfilter =分阶段。MatchedFilter (......'系数'matchingcoeff,......'gainoutputport',真的);prf = waveborm.prf;fast_time_grid = Unigrid(0,1 / FS,1 / PRF,“()”);rangeGates = c * fast_time_grid / 2;λ= c / fc;max_range = 5000;tvg =分阶段。TimeVaryingGain (......“RangeLoss”2 * fspl (rangeGatesλ),......'referenceloss',2 * fspl(max_range,lambda));num_pulse_int = 10;

由于没有必要以脉冲重复频率监视弹道,本例假设系统以20 Hz的频率读取雷达测量值。该示例使用场景查看器来监控场景,并使用距离时间强度(RTI)图以及多普勒时间强度(DTI)图来检查估计的距离和距离率值。

r_update = 20;sceneview = phased.scenarioviewer('updaterate',r_update,......“标题”“带有三个目标的单基地雷达”);rtiscope =分阶段。IntensityScope ('姓名'“Range-Time强度范围”......“包含”'范围(m)'......“XResolution”c / (2 * fs),......“XOffset”, - (matchingdelay-1)* c /(2 * fs),......“TimeResolution”1 / r_update,'时间跨度',5,“IntensityUnits”'D b');nfft = 128;df = prf / nfft;dtiscope = phased.Intssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssscope(......'姓名'“Doppler-Time强度范围”......“包含”'速度(m / sec)'......“XResolution”,dop2speed(df,lambda)/ 2,......“XOffset”dop2speed(脉冲重复频率/ 2λ)/ 2,......“TimeResolution”1 / r_update,'时间跨度',5,“IntensityUnits”'D b');

下一节执行系统仿真并生成可视化。

%预先分配阵列,用于改进的处理速度rxpulses = zeros(numel(ramegates),num_pulse_int);为了k = 1:100为了m = 1: num_pulse_int%更新传感器和目标位置[SensorPos,SensorVel] =敏感(1 / PRF);[tgtpos,tgtvel] = tgtmotion(1 / prf);%计算传感器所示的目标角度[~, tgtang] = rangeangle (tgtpos sensorpos);%模拟脉冲在目标方向上的传播脉冲=波形();[txsig, txstatus] =发射机(脉冲);txsig =散热器(txsig tgtang);txsig =通道(txsig sensorpos、tgtpos sensorvel, tgtvel);反射目标的脉冲tgtsig = target(txsig);在传感器接收目标返回rxsig =收集器(tgtsig tgtang);rxpulses (:, m) =接收机(rxsig ~ (txstatus > 0));结束rxpulses = matchedfilter(rxpuarses);匹配滤波器延迟%正确rxpulses =缓冲区(......rxpuarses(matchingdelay + 1:结束),......尺寸(rxpulses,1));rxpulses = tvg(rxpuarses);rx_int = pulsint(rxpurses,'无组织');%显示RTIRTISCOPE(RX_INT);%显示DTIrx_dop =意味着(fftshift (......abs (fft (rxpulses nfft 2)), 2));dtiscope (rx_dop。');%显示场景场景(SensorPos,SensorVel,TGTPOS,TGTVel);当需要下次更新时,%执行下一次检测敏感(1 / R_Update);tgtmotion(1 / r_update);结束隐藏(dtiscope);隐藏(RTISCOPE);

隐藏(sceneview);显示(rtiscope);

在仿真期间更新方案查看器和RTI都是可以轻松验证模拟是否正常运行,并且在模拟运行时,范围估计是否与地面真实匹配。

隐藏(RTISCOPE);展示(dtiscope);

类似地,DTI提供每个目标的距离率估计。

结论

这个例子描述了可视化雷达和目标轨迹的不同方法。这样的可视化有助于提供系统动力学的整体图景。