这个例子展示了如何使用场景查看器来可视化雷达系统战区。
雷达系统模拟通常包括许多移动物体。例如,雷达和目标都可以运动。此外,每个移动对象可能具有自己的方向,因此当在模拟中存在的更多玩家时,簿记变得越来越具有挑战性。
相控阵系统工具箱™提供了一个场景查看器,帮助可视化雷达和目标如何在空间中移动。通过场景查看器,可以跟踪每个移动平台的轨迹,并检查雷达和目标之间的相对运动。
在第一个示例中,场景查看器用于可视化雷达和目标的轨迹。假设雷达在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提供每个目标的距离率估计。
这个例子描述了可视化雷达和目标轨迹的不同方法。这样的可视化有助于提供系统动力学的整体图景。