主要内容

模拟雷达信号与大气折射效应

雷达系统的性能是其运作的环境密切相关。这个例子将讨论的环境因素之一是系统外的设计师的控制,即大气。特别是,这个例子将关注由于大气折射效应及其对目标参数估计的影响。

这个例子演示了错误由于折射的l波段监视雷达操作在一个较高的纬度在冬天。它首先配置雷达场景和评论内置大气模型可用雷达工具箱™。接下来提出了一个简单的指数近似的折射率与高度。然后使用这些模型来生成智商使用radarScenario和流程的智商来生成检测。最后,然后检测中使用的折射误差分析显示指定的几何。

定义雷达参数

定义一个l波段单站监视雷达的相干处理(cpi) 24脉冲间隔长。传感器是一个固定的系统安装表面塔10米以上。

%设置随机数生成器,以确保结果是可重复的rng (“默认”)%传感器参数频率= 2 e9;% l波段中心频率(赫兹)numPulses = 24;%的脉冲数CPI脉冲重复频率= 1 e3;%脉冲重复频率(赫兹)兼总经理= 1 e-5;%脉冲宽度(s)fs = 3 e7;%采样频率(赫兹)bw = f / 2;%的带宽(赫兹)sensorHgt = 10;%传感器表面高度(米)

考虑到带宽,确定使用bw2rangeres函数距离分辨率。

bw2rangeres (bw)%距离分辨率(m)
ans = 9.9931

配置雷达场景

第一次配置的目标位置分析。在这个场景中,21个不同的目标职位将被考虑。设置目标高度角与真正的一个常数2度倾斜范围不同(也称为几何范围)从1到30公里。设置目标雷达截面(RCS)到20 dBsm,代表大型飞机。

%的目标参数numTgtPos = 21;%的目标位置tgtRCSdBsm = 20;%的目标RCS (dBsm)tgtEl = 2;%的目标仰角(度)numTgtPos tgtSR = linspace(30日)* 1 e3;%的目标倾斜范围(米)

计算的真正目标高度弯曲的地球使用range2height函数与一个有效地球半径设置为true地球半径。使用目标轨迹来定义一个合适的雷达更新时间场景。

%计算目标高度Rearth = physconst (“EarthRadius”);%真实地球半径(米)tgtHgt = range2height (tgtSR sensorHgt tgtEl,“EffectiveEarthRadius”,Rearth);%的目标高度(米)tgtSpeed = 90;%的目标速度(米/秒)updateTime = (tgtSR (2) - tgtSR (1)) / tgtSpeed;

计算飞行时间和创建一个雷达的场景。

flightDuration = (numTgtPos - 1) * updateTime;updateRate = 1 / updateTime;现场= radarScenario (“UpdateRate”updateRate,“IsEarthCentered”,真的,“StopTime”,flightDuration);

增加大气中

模拟大气的折射现象需要一个模型。对于这个示例,内置的大气层中可用refractiveidx函数将被使用。的refractiveidx函数提供了六个ITU参考大气模型,即:

  • 标准大气模型,也称为全球年平均参考大气(MAGRA)

  • 夏天高纬度模型(高于45度)

  • 冬天高纬度模型(高于45度)

  • 夏季中期纬度模型(22至45度)

  • 冬季中期纬度模型(22至45度)

  • 低纬度模型(小于22度)

在冬天选择高纬度模型。可以找到更多的信息关于这些大气模型由于折射建模目标位置错误的例子。

中央广播传播实验室开发了一种广泛使用的参考大气模型接近折射率剖面作为一个指数衰减和高度。一般来说,CRPL模型是一个很好的近似正常的传播条件下折射率的概要文件。这个指数衰减模型构成CRPL方法在以下功能:

  • height2range

  • height2grndrange

  • range2height

  • slant2range

  • refractionexp

它还存在大气作为一个选项在雷达的场景。

CRPL指数模型

N = N 年代 经验值 ( - - - - - - c e h ) ,

在哪里 N 年代 是表面折射率(n), h 是高度(公里), c e 是一个衰变常数(1 /公里)计算的

c e = ln N 年代 N 年代 - - - - - - Δ N

在上面的方程中, Δ N 表面折射率之间的区别是 N 年代 和折射率在1公里的高度。 Δ N 可以用一个指数函数近似表示为

Δ N = 7 32 经验值 ( 0 005577年 N 年代 )

CRPL指数模型很容易修改与当地条件通过设置适当的表面折射率和折射指数的值。使用表面折射率的输出refractiveidx函数作为输入CRPL模型。计算衰减常数(折射指数)使用refractionexp函数。

%定义CRPL模型参数(~,N0) = refractiveidx (0,“LatitudeModel”,“高”,“季节”,“冬天”);%表面折射率(n)rexp = refractionexp (N0);%相应的折射指数(1 /公里)

定义大气模型的雷达CRPL场景。设置表面折射率和折射指数之前获得的值。

大气(场景,“CRPL”,“SurfaceRefractivity”N0,“RefractionExponent”rexp)
ans = AtmosphereCRPL属性:SurfaceRefractivity: 313.4066 RefractionExponent: 0.1440 MaxNumIterations: 10公差:0.0100

创建一个雷达收发机

首先定义一个传感器使用轨迹geoTrajectory并添加一个平台的轨迹。

%表面参数surfHgt = 52个;%在传感器表面高度(米)%设置传感器轨迹sensoralt = sensorHgt + surfHgt;%表面高度(米)sensorpos1 = (42.30141195164364, -71.376098592854, sensoralt);%纳蒂克,美国马(纬度(度)经度(度)Alt (m)]sensorpos2 = sensorpos1;sensorTraj = geoTrajectory ([sensorpos1; sensorpos2], [0; flightDuration]);%添加传感器平台的场景sensorplat =平台(场景,“轨迹”,sensorTraj);

下一个配置单站雷达传感器使用radarTransceiver。定义的矩形相控阵天线与半波间距大小4×4。设置波形调制中频采样。

%配置radarTransceiver(λ,c) = freq2wavelen(频率);elementSpacing =λ/ 2;uraSize = 4 [4];蚂蚁= phased.URA (“大小”(4 - 4),“ElementSpacing”,elementSpacing);传感器= radarTransceiver (“MountingAngles”(-90 0 0),“NumRepetitions”,numPulses);传感器。波形= phased.LinearFMWaveform (“SampleRate”fs,“脉冲宽度”一系列问题,脉冲重复频率的脉冲重复频率,“SweepBandwidth”bw);sensor.Transmitter。获得= 30;sensor.Receiver。获得= 30;sensor.Receiver。年代ampleRate = fs; sensor.Receiver.NoiseFigure = 0; sensor.TransmitAntenna.Sensor = ant; sensor.ReceiveAntenna.Sensor = ant; sensor.TransmitAntenna.OperatingFrequency = freq; sensor.ReceiveAntenna.OperatingFrequency = freq;

把传感器平台。

sensorplat。年代ensors = sensor;

定义目标轨迹

使用目标范围和角度转换为大地坐标aer2geodetic

%定义一个结构为目标的真理tgtTruth。范围= tgtSR;tgtTruth。海拔= tgtEl * 1 (1, numTgtPos);tgtTruth。身高= tgtHgt;%转换方位、仰角和大地的位置范围tgtpos = 0 (numTgtPos, 3);%的目标(lat朗alt)tgtposTime = 0 (numTgtPos, 1);%的位置*= referenceSphere(参考文献“地球”);%地球模型m = 1: numTgtPos [tgtLat、tgtLon tgtalts] = aer2geodetic(90年,tgtEl tgtSR (m),sensorpos1 sensorpos1 (1) (2), sensoralt,参考文献);tgtpos (m) = (tgtLat tgtLon tgtalts);tgtposTime (m) = (m - 1)。* updateTime;结束

定义目标轨迹geoTrajectory和附加到目标平台。

%向场景中添加目标平台tgtTraj = geoTrajectory (tgtpos tgtposTime);平台(场景,“轨迹”,tgtTraj);

可视化使用辅助雷达和目标几何helperRadarGlobeViewer。雷达平台显示为蓝色的点和目标平台显示红点。白线表示常数仰角目标轨迹。

%可视化的场景全球之声= helperRadarGlobeViewer;showScenario(全球之声,场景)positionCamera(全球之声,[42.1417 -71.3920 1.4668 e + 03], [359.9981 5.3302 31.7642])

simulatingRefraction_01.png

设置一个信号处理链

在本节中,将配置信号处理链的对象。在高层,信号处理链收益所描述。

signalProcessingChain.drawio.png

  1. 首先,模拟的智商范围和多普勒处理。

  2. 接下来,数据beamformed侧向。

  3. beamformed数据处理由一个二维恒定的误警率检测器(CFAR)生成检测。只保留最高的信噪比检测。

  4. 目标的方位角和高度角然后beamformer估计使用一笔/不同。

  5. 最后,目标的范围由二次插值法进一步细化。该链的输出是目标检测。

首先,配置phased.RangeDopplerResponse创建一个对象来模拟datacube执行范围和多普勒处理。

%初始化距离/多普勒处理对象matchingCoeff = getMatchedFilter (sensor.Waveform);rngdopresp = phased.RangeDopplerResponse (“SampleRate”fs,“DopplerFFTLengthSource”,“属性”,“DopplerFFTLength”numPulses,“DopplerOutput”,“速度”,“PRFSource”,“属性”,脉冲重复频率的脉冲重复频率);

定义一个转向矢量对象将用于创建一个射程角情节,以及执行之前beamform CFAR检测。

%波束形成steeringvec = phased.SteeringVector (“SensorArray”,蚂蚁);%为初始射程角可视化创建指导向量elVec = 90:90;sv = steeringvec(频率,[0(1,元素个数(elVec));elVec]);

接下来,定义一个二维CFAR 3保卫细胞和15训练细胞在每一侧的细胞在测试范围和1保卫细胞和3培训细胞多普勒。设置1 e-6误警率。

% 2 d CFARcfar = phased.CFARDetector2D (“GuardBandSize”(3 - 1),“TrainingBandSize”15 [3],“ProbabilityFalseAlarm”1 e-6“OutputFormat”,“检测指数”,“NoisePowerOutputPort”,真正的);

定义一个总和/区别beamformer角估计和创建一个范围估计对象提高范围估计。

%角估计sumdiff = phased.SumDifferenceMonopulseTracker2D (“SensorArray”蚂蚁,“OperatingFrequency”、频率);%范围评估对象rangeestimator = phased.RangeEstimator;

模拟智商和创建检测

模拟智商调用一样简单收到方法在雷达场景的场景。推进情况和收集智商radarTransceiver

%初始化模拟numSamples = 1 /脉冲重复频率* fs;依据=结构(“范围”0 (numTgtPos),“角”numTgtPos 0 (2),“SNRdB”0 (numTgtPos));m = 1: numTgtPos%推进现场推进(现场);%更新几何图形可视化updateDisplay(全球之声,scene.SimulationTime scene.Platforms {:}));positionCamera(问[42.1417 -71.3920 1.4668 e + 03], [359.9981 5.3302 31.7642]);drawnow;暂停(0.1);%收集智商tmp =接收(现场);iqsig = tmp {1};

范围和多普勒处理模拟的智商。

% Range-Doppler过程(职责、rngVec dopVec] = rngdopresp (iqsig matchingCoeff);

接下来,beamform射程角的数据来了解性能。

% Beamform各个角度respAng = (sv ' *挤压(max(职责,[],3))。');

画出射程角和range-Doppler数据。

%转换为数据库angRespMagdB = mag2db (abs (respAng));respMagdB = mag2db (abs(职责));如果m = = 1%初始化射程角图图tiledlayout (1、2) nexttile hRAMaxes = gca;hRAMplot = pcolor (rngVec * 1 e - 3、elVec angRespMagdB);hRAMplot。EdgeColor =“没有”;hRAMplot。FaceColor =的插值函数;ylabel (的高度角(度))包含(的距离(公里))标题(“射程角”)hC = colorbar;hC.Label。字符串=“(dB)级”;%初始化range-Doppler情节甘氨胆酸nexttile hRDMaxes =;hRDMplot = pcolor (rngVec * 1 e - 3、dopVec挤压(max (respMagdB [], 2)) ");hRDMplot。EdgeColor =“没有”;hRDMplot。FaceColor =的插值函数;ylabel (“速度(米/秒)”)包含(的距离(公里))标题(“Range-Doppler”)hC = colorbar;hC.Label。字符串=“(dB)级”;其他的%更新射程角图hRAMplot。CData = angRespMagdB;%更新range-Doppler情节hRDMplot。CData =挤压(max (respMagdB [], 2))”;结束xlim (hRAMaxes[马克斯(tgtSR (m) - 2 e3), rngVec(1)最小值((tgtSR (m) + 2 e3), rngVec(结束)))* 1 e - 3) xlim (hRDMaxes,[马克斯((tgtSR (m) - 2 e3), rngVec(1)最小值((tgtSR (m) + 2 e3), rngVec(结束)))* 1 e - 3) drawnowlimitrate暂停(0.25)

最后,检测和估计目标距离和角度使用helper函数helperDetectAndEstimate。这个helper函数包含较宽的波束形成,CFAR检测和角和范围估计处理步骤。

%检测目标和评估范围和角度依据= helperDetectAndEstimate (cfar、sumdiff steeringvec, rangeestimator,m, rngVec, dopVec职责,依据);结束

图包含2轴对象。坐标轴对象1标题射程角,包含范围(公里),ylabel高度角(度)包含一个对象类型的表面。轴与标题Range-Doppler对象2,包含范围(公里),ylabel速度(米/秒)包含一个类型的对象的表面。

评估折射误差

预测范围和高程,将探测器的输出包括折射效果。计算的预测范围和仰角,使用slant2range函数与CRPL方法选择。

%估计使用CRPL传播范围[predicted.Range,预测。海拔]= slant2range (tgtTruth.Range、sensorHgt tgtTruth.Height,“方法”,“CRPL”);

现在计算误差范围。误差范围的区别是传播范围和真正的倾斜范围。检测到错误的蓝色按照预测范围错误,图中的虚线所示。注意智商处理引入额外的偏见来源。这种偏见可以归因于等因素:

  • 系统的距离分辨率,在大约10 m和相当大的

  • 范围本横跨。

%计算误差范围(m)有限公司= colororder;图(“名字”,“范围错误(m)”)情节(tgtSR * 1 e - 3,侦破。范围——tgtTruth.Range“o”,“MarkerFaceColor”有限公司(:),“线宽”,1.5)网格情节(tgtSR * 1 e - 3,预测。范围——tgtTruth.Range“——k”,“线宽”(1.5)包含“倾斜范围(公里))ylabel (“范围错误(m)”)标题(“范围错误(m)”)传说(检测距离误差的,预测误差范围的,“位置”,“最佳”)

图范围错误(m)包含一个坐标轴对象。坐标轴对象与标题范围错误(m),包含倾斜范围(公里),ylabel距离误差(m)包含2线类型的对象。一个或多个行显示的值只使用这些对象标记代表发现距离误差,预测误差范围。

接下来计算高程误差。高程误差的区别是发现仰角和真正的仰角。注意,发现错误匹配预测仰角错误。随着目标范围更远,高程误差增加。

%计算仰角误差(度)图(“名字”,的高程误差(度))情节(tgtSR * 1 e - 3, dets.Angles (2:) - tgtTruth.Elevation,“o”,“MarkerFaceColor”有限公司(:),“线宽”,1.5)网格情节(tgtSR * 1 e - 3,预测。海拔,tgtTruth.Elevation“——k”,“线宽”(1.5)包含“倾斜范围(公里))ylabel (的高程误差(度))标题(的高程误差(度))传说(“检测高程误差”,“预测高程误差”,“位置”,“最佳”)

图高程误差(度)包含一个坐标轴对象。坐标轴对象与标题高程误差(度),包含倾斜范围(公里),ylabel高程误差(度)包含2线类型的对象。一个或多个行显示的值只使用这些对象标记代表检测高程误差,预测高程误差。

接下来,计算高度误差。高度误差的区别是明显的高度,高度计算假设没有折射,而真正的目标高度。计算表面高度,使用range2height函数与真实的地球半径。注意,高度错误匹配预测高度检测到错误。随着目标更远的范围、高度错误慢慢增加。最远的距离、高度可以看到大约20米的错误。

%计算明显的高度检测侦破。身高= range2height (dets.Range、sensorHgt dets.Angles (2:)“EffectiveEarthRadius”,Rearth);%计算明显的高度预测的路径预测。身高= range2height (predicted.Range sensorHgt predicted.Elevation,“EffectiveEarthRadius”,Rearth);%绘制高度错误(米)图(“名字”,“高度误差(m)”)情节(tgtSR * 1 e - 3,侦破。高度——tgtTruth.Height“o”,“MarkerFaceColor”有限公司(:),“线宽”,1.5)网格情节(tgtSR * 1 e - 3,预测。高度——tgtTruth.Height“——k”,“线宽”(1.5)包含“倾斜范围(公里))ylabel (“高度误差(m)”)传说(“发现高度误差”,“预测高度误差”,“位置”,“最佳”)

图高度误差(m)包含一个坐标轴对象。坐标轴对象包含倾斜范围(公里),ylabel高度误差(m)包含2线类型的对象。一个或多个行显示的值只使用这些对象标记代表发现高度误差,预测高度误差。

总结

这个例子演示了如何折射模型的l波段监视雷达操作在一个较高的纬度在冬天。它也演示了如何配置和实现信号处理链来检测目标。最后,它讨论了目标探测错误由于折射。

助手

helperDetectAndEstimate

函数依据= helperDetectAndEstimate (cfar、sumdiff steeringvec, rangeestimator,tgtIdx、rngVec dopVec iqPCDP,依据)%检测处理。执行以下:%,较宽的波束形成% - 2 d CFAR% -角估计%,区间估计%的箱子数量numRngBins =元素个数(rngVec);numDopBins =元素个数(dopVec);% datacube转化为力量频率= sumdiff.OperatingFrequency;%的操作频率(赫兹)sv = steeringvec(频率(0,0));%侧向iqPCDPtmp =排列(iqPCDP [2 1 3]);% <元素x范围多普勒>iqPCDPBF = (sv ' *重塑([],iqPCDPtmp numRngBins * numDopBins));% Beamform <束x范围多普勒>iqPow = abs(挤压(iqPCDPBF)) ^ 2;%功率(瓦特)iqPow =重塑(iqPow元素个数(rngVec),元素个数(dopVec));%的权力范围< x多普勒>% 2 d CFAR运行。细胞的指标CFAR必须被测试%许可证模板大小。numRngStencil = cfar.GuardBandSize (1) + cfar.TrainingBandSize (1);numDopStencil = cfar.GuardBandSize (2) + cfar.TrainingBandSize (2);idxRngTest = (numRngStencil + 1):(元素个数(rngVec) - numRngStencil);idxDopTest = (numDopStencil + 1):(元素个数(dopVec) - numDopStencil);[idxRngGrid, idxDopGrid] = meshgrid (idxRngTest idxDopTest);[idxDet, noisePwr] = cfar (iqPow [idxRngGrid (:)。”;idxDopGrid (:)。');%承担最大检测信噪比目标idxDetLinear = sub2ind(大小(iqPow) idxDet (1:), idxDet (2:));snrDet = iqPow (idxDetLinear)。/ noisePwr;[~,idxMax] = max (snrDet);idxRng = idxDet (1、idxMax);idxMax idxDop = idxDet(2日);%估计真正的角。假设传感器与目标。dets.Angles (:, tgtIdx) = sumdiff(挤压(iqPCDP (idxRng: idxDop)),[0;0]);tgtIdx dets.Angles (2) = -dets.Angles (2, tgtIdx);% Beamform发现角sv = steeringvec(频率、dets.Angles (:, tgtIdx));iqPCDPBF = (sv ' *挤压(iqPCDP (:,:, idxDop)。');%估计信噪比和范围dets.SNRdB (tgtIdx) = pow2db (abs(挤压(iqPCDPBF (idxRng)))。^ 2. / noisePwr (idxMax));dets.Range (tgtIdx) = rangeestimator (iqPCDPBF (:), rngVec, idxRng);结束