主要内容

从统计模型创建基于物理的雷达模型

此示例演示如何从统计雷达模型以编程方式创建基于物理的雷达模型。

雷达是一种感知系统,它使用天线或天线阵列捕获射频能量,然后向下转换和处理,以提供雷达视野内物体的信息。所接收的信号需要同时经过信号处理子系统和数据处理子系统。

信号处理子系统的目标是将接收到的IQ信号转换为目标检测。数据处理子系统接受这些检测并产生与检测到的目标相对应的轨迹。

信号处理子系统帮助生成当前时刻的场景快照,并包含关于对象是否在覆盖范围内的信息,以及如果是,它在哪里。数据处理子系统将这些快照链接在一起,因此操作人员可以了解随着时间的推移发生了什么。这有助于获得多普勒信息,除了预测目标的方向。

模拟和建模算法和系统的雷达工程师需要跨越信号和数据处理领域的一系列抽象级别。抽象级别取决于雷达开发生命周期的阶段、被模拟场景的长度和正在执行的工程工作的类型。

在项目的早期阶段,在探索设计权衡时,在雷达方程级别建模可能就足够了。随着项目的进展,有必要提高模型的保真度水平,从统计级模拟转移到信号级模拟。另外,场景的长度可以决定哪个建模抽象级别是有意义的。例如,对于较长的场景时间(秒、分钟或更长),最好生成统计或概率雷达探测和跟踪,以覆盖一个任务或测试跟踪和传感器融合算法。或者,更高的保真度、基于物理的模拟,包括传输波形、信号在环境中的传播、目标反射和接收阵列中的接收信号,对于感兴趣的事件或在开发信号处理算法时需要。

在本例中,创建了一个同时包含雷达和目标的场景。首先,使用基于雷达方程的统计模型生成探测结果。接下来,从统计模型创建一个等效的基于物理的雷达模型。然后使用基于物理的雷达模型来模拟IQ信号并生成检测结果。算例表明,两个模型的检测结果是一致的。

定义场景

首先,定义一个使用固定位置监视雷达的场景。雷达的视野内有三个目标。标出雷达和目标的位置。

%创建目标Tgt1 = struct(...“PlatformID”, 1...“位置”, [0 -50e3 -1e3],...“速度”, [0 900*1e3/3600 0]);Tgt2 = struct(...“PlatformID”2,...“位置”, [20e3 0 -500],...“速度”, [700*1e3/3600 00]);Tgt3 = struct(...“PlatformID”3,...“位置”, [-20e3 0 -500],...“速度”, [300*1e3/3600 00]);tp = theaterPlot(“XLim”(-30年e3 30 e3),“YLim”(-60年e3 10 e3),“ZLim”, -10 e3 e3);gtplot = platformPlotter(tp,“DisplayName的”“目标地面真相”...“标记”“^”“MarkerSize”8“MarkerFaceColor”“r”);plotPlatform (gtplot [tgt1.Position; tgt2.Position; tgt3.Position],...[tgt1.Velocity; tgt2.Velocity tgt3.Velocity) {“Target1”“Target2”“Target3”});

图中包含一个axes对象。axis对象包含4个类型为line、text的对象。该对象表示目标地面真值。

定义用于探测生成的雷达

接下来,定义一个从统计模型生成探测结果的机场监视雷达。机场监视雷达安装在离地面15米的高空。雷达传感器定义包括雷达关键参数,如扫描类型和视场信息。

radarDataGenerator根据雷达方程统计生成检测结果。

RPM = 12.5;Fov = [1.4;5];%[方位;海拔高度)扫描速率= rpm*360/60;%度/秒Updaterate = scanrate/fov(1);%赫兹传感器= radarDataGenerator(1,“旋转”...“DetectionProbability”, 0.99,...“UpdateRate”updaterate,...“MountingLocation”, [0 0 -15],...“MaxAzimuthScanRate”scanrate,...“FieldOfView”fov,...“AzimuthResolution”,视场(1));radarPosition = [0 0 0];radarVelocity = [0 0 0];radarplot = platformPlotter(tp,“DisplayName的”“雷达”...“标记”“年代”“MarkerSize”8“MarkerFaceColor”“b”);plotPlatform (radarplot radarPosition radarVelocity, {“雷达”})

图中包含一个axes对象。axis对象包含6个类型为line、text的对象。这些物体代表目标地面真相,雷达。

生成统计雷达检测

从雷达的完整扫描生成检测,并在场景中绘制检测图。

从雷达的全扫描生成检测。simTime = 0;detBuffer = {};rng (2020);true [dets, numDets, config] = sensor([tgt1 tgt2 tgt3], simTime);detBuffer = [detBuffer;dets];% #好< AGROW >%完全扫描是否已完成?如果配置。IsScanDone打破%是的结束simTime = simTime+1/sensor.UpdateRate;结束stadetpos = 0 (numel(detBuffer),3);m = 1:numel(detBuffer) stadetpos(m,:) = detBuffer{m}. measurement .';结束stadet = detectionPlotter(tp,“DisplayName的”“统计检测”...“标记”' d '“MarkerSize”6“MarkerFaceColor”‘g’);plotDetection (stadet stadetpos)

图中包含一个axes对象。axis对象包含7个类型为line、text的对象。这些对象代表目标地面真相,雷达,统计检测。

图中显示,生成的检测结果与地面真实目标位置相匹配。由真值标记指示的三个目标都有一个检测,该检测显示为真值标记上的覆盖层。

定义用于IQ信号产生和处理的雷达

因为统计模拟是令人满意的,所以现在可以执行IQ信号模拟来验证信号处理算法是否正常工作。创建一个基于前面配置的统计传感器产生IQ信号的雷达收发器。

sensor_iq = radarTransceiver(传感器)
sensor_iq = radarTransceiver的属性:波形:[1x1相控。[1x1相控。]传输天线:[1x1相控。]接收天线:[1x1相控。接收器:[1x1相控。]ReceiverPreamp] MechanicalScanMode: 'Circular' InitialMechanicalScanAngle: -0.1000 MechanicalScanRate: 75 electronicalscanmode: 'None' MountingLocation: [0 0 -15] MountingAngles: [0 00] NumRepetitionsSource: 'Property' NumRepetitions: 1

注意的配置sensor_iq变量更接近物理系统。sensor_iq产生你可以处理的智商信号。对于本例,实现一个简单的阈值检测器来生成检测。

%配置信号处理组件coeff = getMatchedFilter(sensor_iq.波形);Mf =阶段性的。MatchedFilter (“系数”多项式系数,“GainOutputPort”,真正的);npower = noisepow(1/sensor_iq.Waveform.PulseWidth,...sensor_iq.Receiver.NoiseFigure sensor_iq.Receiver.ReferenceTemperature);threshold = npower * db2pow(npwgnthresh(sensor.FalseAlarmRate));fs = sensor_iq.Waveform.SampleRate;prf = sensor_iq.Waveform.PRF;C = physconst(“光速”);fc = sensor_iq. transmit天线.工作频率;Lambda = c/fc;Nsamp = round(fs/prf);rgates = (0:Nsamp-1)/fs*c/2;TVG =阶段性的。TimeVaryingGain (...“RangeLoss”2 * fspl(大门,λ),...“ReferenceLoss”2 * fspl (Nsamp / fs * c / 2λ));

IQ信号及其处理仿真

接下来,执行IQ模拟并检查处理算法是否产生与统计传感器相似的结果。注意,生成IQ信号的模拟循环与生成统计检测的循环几乎相同。该循环还展示了如何处理IQ信号以获得检测。

simTime = 0;detBuffer_iq = {};true [sig, config] = sensor_iq([tgt1 tgt2 tgt3], simTime);如果配置。IsScanDone打破结束%处理[sigp,Gmf] = mf(sig);Sigp = tvg(Sigp);th = sqrt(阈值*db2pow(Gmf));Ind = abs(sigp)>th;如果Any (ind) [~,idx] = max(abs(sigp));Rng_est = rgates(idx);Meas_sensor = [0;0;rng_est];Meas_body = local2globalcoord(meas_sensor,“老”...config.OriginPosition config.Orientation);Dets_iq =结构(“时间”simTime,“测量”, meas_body);detBuffer_iq = [detBuffer_iq;dets_iq];% #好< AGROW >结束simTime = simTime+1/update;结束iqdetpos = 0 (numel(detBuffer_iq),3);m = 1:numel(detBuffer_iq) iqdetpos(m,:) = detBuffer_iq{m}. measurement .';结束iqdet = detectionPlotter(tp,“DisplayName的”“智商检测”...“标记”“o”“MarkerSize”10“MarkerEdgeColor”“k”);plotDetection (iqdet iqdetpos)

图中包含一个axes对象。axis对象包含8个类型为line、text的对象。这些对象代表目标地面真相,雷达,统计检测,智商检测。

图中清楚地表明,IQ信号产生的结果与统计模型产生的结果相似。

总结

在本例中,使用统计模型基于雷达方程生成雷达探测。然后根据统计模型编程创建一个基于物理的雷达模型,并从该基于物理的雷达模型生成的IQ信号派生出一组新的检测。两个模型的探测结果与地面真实情况吻合良好。这个工作流是一种非常方便的方法,可以快速建立和运行信号级别模型。一旦基本信号模型就位,就可以根据项目要求对其进行扩展。