主要内容

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

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

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

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

信号处理子系统有助于在当前时间生成场景的快照,并且包括关于对象是否处于覆盖范围内的信息,如果是的话,则在其位置。数据处理子系统将这些快照链接在一起,因此运营商可以了解随时间发生的情况。除了预测目标是标题的预测之外,这有助于获得多普勒信息。

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

在项目的早期阶段,随着设计权衡正在探索,雷达方程水平的建模可能是足够的。随着项目的进展,有必要增加模型保真度的水平,从统计水平转向信号电平仿真。此外,场景的长度可以决定哪些建模抽象级别是有意义的。例如,对于更长的场景时间(秒,分钟或更长时间),可以更好地生成统计或概率雷达检测和轨道以覆盖任务或测试跟踪和传感器融合算法。或者,需要更高的保真度,包括传输波形的物理基模拟,通过环境的信号传播,反射特性,以及在接收阵列处需要在接收阵列中的接收信号,或者在正在开发信号处理算法时。

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

定义了场景

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

%创建目标tgt1 =结构(......'平台',1,......“位置”, [0 -50e3 -1e3],......“速度”,[0 900 * 1E3 / 3600 0]);tgt2 = struct(......'平台'2,......“位置”,[20e3 0 -500],......“速度”,[700 * 1E3 / 3600 0 0]);tgt3 = struct(......'平台'3,......“位置”,[-20e3 0 -500],......“速度”, [300*1e3/3600 00]);tp = theaterPlot (“XLim”(-30年e3 30 e3),'ylim'(-60年e3 10 e3),“ZLim”,[ -  10e3 1E3]);gtplot = platformplotter(tp,'显示名称'“目标地面真理”......“标记”“^”“MarkerSize”,8,“MarkerFaceColor”'r');plotPlatform (gtplot [tgt1.Position; tgt2.Position; tgt3.Position],......[tgt1.velocity; tgt2.velocity; tgt3.velocity],{“Target1”“Target2”“Target3”});

图中包含一个轴对象。axis对象包含4个类型为line, text的对象。这个对象代表目标地面真相。

定义用于检测生成的雷达

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

radarDataGenerator基于雷达方程在统计上生成检测。

rpm = 12.5;fov = (1.4; 5);%[方位;海拔高度)ScanRate = RPM * 360/60;%度/秒updaterate = scanrate / fov(1);%赫兹传感器= radarDataGenerator (1,'旋转器'......“DetectionProbability”, 0.99,......“UpdateRate”updaterate,......“MountingLocation”,[0 0-15],......'maxazimuthscanrate'scanrate,......“FieldOfView”fov,......“AzimuthResolution”,fov(1));辐射= [0 0 0];radarvelocity = [0 0 0];Radarplot = platformplotter(TP,'显示名称''雷达'......“标记”'“MarkerSize”,8,“MarkerFaceColor”'B');plotPlatform (radarplot radarPosition radarVelocity, {'雷达'})

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

生成统计雷达探测

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

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

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

该曲线表明生成的检测与地面真实目标位置匹配。所有真实标记所示的三个目标都有一个检测,该检测显示为真实标记上的叠加。

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

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

SENSOR_IQ = RADARTRANSEIVER(传感器)
Sensor_IQ =具有属性的RadarTransceiver:波形:[1x1相位.RectangularWaveForm]发射机:[1x1相控。翻译器] TransciTentenna:[1x1相控。[1x1相位.Collector]接收器:[1x1相算序列.ReceiveRepeLemp]机械扫描:'圆形'InitialMecharicalScanangle:-0.1000机械扫描:75 electroniccanMode:'无'onearingLocation:[0 0-15] uditingangles:[0 0] numrepetitionssource:'属性'numrepetitions:1

注意sensor_iq变量更接近物理系统。sensor_iq生成您可以处理的IQ信号。对于此示例,实现简单的阈值检测器以生成检测。

配置信号处理组件多项式系数= getMatchedFilter (sensor_iq.Waveform);mf =分阶段。MatchedFilter ('系数'多项式系数,'gainoutputport',真正的);- = noisepow (1 / sensor_iq.Waveform.PulseWidth,......sensor_iq.Receiver.NoiseFigure sensor_iq.Receiver.ReferenceTemperature);阈值= npower * db2pow(npwgnthresh(sensor.FalseAlarmRate));fs = sensor_iq.Waveform.SampleRate;脉冲重复频率= sensor_iq.Waveform.PRF;c = physconst ('LightSpeed');fc = sensor_iq.TransmitAntenna.OperatingFrequency;λ= c / fc;Nsamp =圆(fs /脉冲重复频率);大门= (0:Nsamp-1) / fs * c / 2;tvg =分阶段。TimeVaryingGain (......“RangeLoss”2 * fspl(大门,λ),......'referenceloss',2 * fspl(nsamp / fs * c / 2,lambda));

IQ信号和处理仿真

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

simTime = 0;detBuffer_iq = {};true [sig,config] = sensor_iq([tgt1 tgt2 tgt3],simtime);如果配置。IsScanDone打破结束%处理[sigp, Gmf] = mf(团体);sigp = tvg (sigp);th =√阈值* db2pow (Gmf));印第安纳州= abs (sigp) > th;如果任何(IND)[〜,IDX] = MAX(ABS(SIGP));rng_est = rgates(idx);meas_sensor = [0; 0; rng_est];meas_body = local2globalcoord(meas_sensor,'sr'......config.originposition,config.orientation);dets_iq = struct('时间'simTime,“测量”,meas_body);detbuffer_iq = [detbuffer_iq; dets_iq];% #好< AGROW >结束simTime = simTime + 1 / updaterate;结束iqdetpos =零(numel(detbuffer_iq),3);m = 1:numel(detBuffer_iq) iqdetpos(m,:) = detBuffer_iq{m}. measurement .';结束iqdet = detectionPlotter (tp,'显示名称'“智商检测”......“标记”“o”“MarkerSize”10,“MarkerEdgeColor”“k”);plotDetection (iqdet iqdetpos)

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

从图中可以清楚地看出,IQ信号生成的结果与统计模型生成的结果相似。

总结

在该示例中,统计模型用于基于雷达方程生成雷达检测。然后,从统计模型以编程方式创建基于物理的雷达模型,并且从基于物理基雷达模型产生的IQ信号导出了一组新的检测。两种型号的检测良好地匹配地面真相。此工作流程是一种非常便捷的方法,可以快速启动信号级模型和运行。一旦基本信号模型到位,它就可以随着项目指示而扩展。