主要内容

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

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

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

信号处理子系统的目标是将接收到的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”});

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

定义用于探测生成的雷达

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

radarDataGenerator根据雷达方程统计生成探测。

转速= 12.5;Fov = [1.4;5];%[方位;海拔高度)扫描速率= rpm*360/60;%度/秒update = scanrate/fov(1);%赫兹传感器= radardatgenerator (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, {“雷达”})

图中包含一个轴对象。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(数字(detBuffer),3);m = 1:numel(detBuffer) stadetpos(m,:) = detBuffer{m}. measurement .';结束stadet = detectionPlotter(tp,“DisplayName的”“统计检测”...“标记”' d '“MarkerSize”6“MarkerFaceColor”‘g’);plotDetection (stadet stadetpos)

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

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

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

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

传感器收发器
sensor_iq = radar收发器属性:波形:[1x1相控。矩形波形]发射器:[1x1相控。发射器]透射天线:[1x1相位。接收天线:[1x1相控。]接收器:[1x1相控。]ReceiverPreamp] MechanicalScanMode: 'Circular' InitialMechanicalScanAngle: -0.1000 MechanicalScanRate: 75 ElectronicScanMode: 'None' MountingLocation: [0 0 -15] MountingAngles: [0 000] NumRepetitionsSource: 'Property' NumRepetitions: 1

注意到的配置sensor_iq变量更接近物理系统。sensor_iq产生你可以处理的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. format . samplerate;prf = sensor_iq. format . prf;C = physconst(“光速”);fc = sensor_iq. transmitantena . operatingfrequency;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);测量传感器= [0;0;rng_est];Meas_body = local2globalcoord(测量传感器,“老”...config.OriginPosition config.Orientation);Dets_iq = struct(“时间”simTime,“测量”, meas_body);detBuffer_iq = [detBuffer_iq;dets_iq];% #好< AGROW >结束simTime = simTime+1/update;结束iqdetpos = 0(数字(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)

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

该图清楚地表明,从IQ信号生成得到的结果与从统计模型生成的结果相似。

总结

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