主要内容

模拟一个海上雷达PPI

这个例子展示了如何在海洋环境中模拟旋转天线阵列的平面位置指示器(PPI)雷达图像。您将配置一个雷达场景和光谱海面模型,使用点散射器集合模拟扩展目标,生成返回信号,并绘制结果的PPI图像。

配置雷达操作场景

为可重复的结果设置RNG种子。

rng默认的

该方案将包括一个大型旋转均匀矩形阵列(URA)安装在海面上的固定位置。布置在长方体表面上的一组点目标将被用来模拟中型集装箱船。

定义雷达系统参数。使用10 GHz的x波段雷达,具有1度方位角波束宽度和10米距离分辨率。使用宽的60度高程波束宽度,这将导致市建局有两排元素。

Freq = 10e9;%赫兹Azbw = 1;%度肘部= 60;%度Rngres = 10;% m

计算达到所需波束宽度所需的均匀间距元素的数量,并创建一个分阶段。URA所言.设置BackBaffled属性设置为true,以便只包含来自指向方向的返回值。

Sinc3db = 0.8859;Numelems (1) = round(2*sinc3db/deg2rad(elbw));Numelems (2) = round(2*sinc3db/deg2rad(azbw));λ = freq2waven (freq);array = phase . ura (numelems,lambda/2);array. element . back困惑= true;

让雷达以50转/分旋转,并以度/秒表示。根据这个速率计算旋转周期。

旋转率= 50/60*360;%度/秒旋转周期= 360/旋转;%交会

计算指定方位波束宽度最小覆盖360度所需的脉冲总数。使用旋转周期找到所需的脉冲重复频率(PRF)。

n脉冲= ceil(360/azbw);PRF =脉冲/转周期;%赫兹

快时采样率必须是PRF的整数倍。使用所需的范围分辨率找到所需的采样率,然后调整以匹配此约束与PRF。雷达将使用短脉冲,每个分辨率单元有一个样本。

sampleRate = 1/range2time(rngres);%赫兹sampleRate = prf*round(sampleRate/prf);rngres = time2range(1/sampleRate);% m

现在创建radarTransceiver并根据需要设置参数。

rdr = radarTransceiver;rdr. transmitantena . operatingfrequency = freq;rdr. receive天线. operatingfrequency = freq;rdr.TransmitAntenna.Sensor = array;rdr. receiveantena . sensor = array;rdr. form. prf = prf;rdr.Receiver.SampleRate = sampleRate;rdr. form. sampleRate = sampleRate;rdr. wave . pulsewidth = 1/sampleRate;

创建一个radarScenario并设置UpdateRate的更新速率派生为0radarTransceiver配置。

场景= radarScenario(“UpdateRate”, 0);

现在配置海面。表面将被定义在一个2公里乘2公里的正方形区域上。

seaLength = 2e3;% m

seaSpectrum对象用于定义曲面的光谱模型。的决议属性定义空间域中底层网格的间距WaveVectorSpacing定义频域网格的间距。分辨率必须是表面长度的一个因素,因此指定所需的表面分辨率为雷达距离分辨率的1/4(这足以捕获波的形状),然后调整以匹配这个约束。设置WaveVectorSpacing 2 π 除以曲面的长度。

seaRes = rngres/4;% mseaRes = seaLength/round(seaLength/seaRes);specspectrum (“决议”烤焦,“WaveVectorSpacing”, 2 *π/ seaLength);

surfaceReflectivitySea对象用于指定将与表面相关联的反射率模型。水平极化使用海况为3的NRL反射率模型。

refl = surface reflflectivitysea (“模型”“海军”“SeaState”3,“极化”“H”);

使用反射率和光谱模型创建2公里乘2公里的海面。指定风速为10米/秒,风向为0度,因此风向为+X方向。

风速= 10;% m / swindDir = 0;%度bdry = [-1 1;-1 1]*seaLength/2;海平面(场景中,“边界”bdry,“RadarReflectivity”,反射,“SpectralModel”规范,“风速”风速,“WindDirection”, windDir);

创建雷达平台。使用kinematicTrajectory目标是将雷达安装在海拔24米以上,并使用AngularVelocity参数指定绕Z轴的旋转速率,单位为弧度/秒。

rdrHeight = 24;% mtraj = kinematicTrajectory(“位置”,[0 0 rdrHeight],“AngularVelocitySource”“属性”“AngularVelocity”,[0 0 deg2rad(旋转)]);平台(场景中,“传感器”rdr,“轨迹”, traj);

使用MountingAngles属性将波束向下指向,使其位于雷达最低点和海面边缘之间的中心。

depang = atand(4*rdrHeight/seaLength);rdr。安装角度= [0 depang 0];

定义一个长方体目标,然后使用提供的helper函数向场景中添加一组离散散射体,以实现目标的基本表示。指定目标尺寸、总RCS、位置、航向和速度。指定的距离分辨率用于确定沿长方体表面散射体的间距。

tgtdim = [120 18 22];%长,宽,高(m)TGTRCS = 10;% m ^ 2tgtpos = [seaLength/3 seaLength/16 0];TGTHDG = -30;%度TGTSPD = 8;% m / shelperMakeExtendedTarget(场景、tgtdims tgtrcs、tgtpos tgthdg, tgtspd, rngres)

最后,通过调用为雷达启用杂波生成clutterGenerator方法。杂波发生器只包括波束宽度在3db以内的表面区域。默认情况下,表面阴影是启用的,并且可以使用UseShadowing财产。

clut = clutterGenerator(scenario,rdr);

使用提供的助手函数创建场景的可视化。

helperPlotScenarioGeometry (rdrHeight seaLength depang,数组,频率,tgtpos)

图中包含一个axes对象。标题为Scenario Geometry的axis对象包含9个类型为面、线、文本的对象。

运行模拟并收集结果

模拟的每一帧将为一个指向方向的方位角生成一个距离轮廓。在接收到每一帧的原始IQ数据后,a分阶段。RangeResponse对象将用于执行匹配的筛选。现在创建响应对象,指定使用的采样率,并从雷达的波形对象中获得所需的匹配滤波器系数。

Resp =阶段性的。RangeResponse (“RangeMethod”匹配滤波器的“SampleRate”, sampleRate);mfc = getMatchedFilter(rdr.波形);

指定您想要模拟的360度的大小。扫描从0度方位角开始,45度的覆盖范围足以看到目标。在64 GB RAM和3.6 GHz CPU的机器上,完整的360度旋转大约需要10分钟。

azcov =45

根据所需的方位覆盖范围设置场景停止时间。从脉冲总数中减去一半,以确保模拟包含指定的精确脉冲数。

场景。StopTime = azcov/360*(npulse -1/2)/prf;

运行模拟。跟踪每个循环的帧数,并从范围响应对象中获取范围容器的向量。矩阵ppi将包含格式为按方位排列的信号数据。

Frame = 0;NRNG = floor(time2range(1/prf)/rngres);Ppi = 0 (nrng, n豆类);提前(场景)帧=帧+ 1;Iqsig = receive(场景);[ppi(:,框架),rngbins] = resp(总和(iqsig {1}, 2), mfc);结束

创建一个PPI图像

PPI图像由一组以径向线排列的距离剖面组成,形成笛卡尔空间中场景的圆形图像。

IQ数据涵盖了所有范围的模糊性,所以首先要将数据修剪到感兴趣的范围。使用200米的最小地面距离和等于一半海面长度的最大地面距离,然后找出与这些距离对应的距离门指数。

minRange =√(200^2 + rdrHeight^2);maxRange =√((seaLength/2)^2 + rdrHeight^2);minGate = find(rngbins >= minRange,1,“第一”);maxGate = find(rngbins <= maxRange,1,“最后一次”);

将方位角指向角和范围箱转换为矩形坐标,然后使用冲浪函数绘制图像。当指定图像的方位角域时,使用比脉冲数多一个点,以便图像完全包含所有360度方位角。

Az =旋转率*(0:帧)/prf;gndrng = sqrt(rngbins(minGate:maxGate).^2- rdrheight ^2);X = gndrng.*cosd(az);Y = gndrng.*sind(az);冲浪(x, y, 0(大小(x)), 20 * log10 (abs (ppi (minGate: maxGate, 1:框架))))阴影查看(0,90)色条轴平等的colormap冬天标题(“PPI图像”

图中包含一个axes对象。标题为PPI Image的axis对象包含一个类型为surface的对象。

下面的动图显示了这个场景的记录,天线在大约34秒内旋转了30次。

PPI.gif

结论

在本例中,您了解了如何在海上环境中使用旋转雷达生成杂波和目标返回。您了解了如何使用光谱模型来获得真实的海面高度和表面阴影,以及如何使用一组点目标来模拟扩展目标,这允许目标被表面部分遮挡。将IQ数据由极坐标格式转换为笛卡尔坐标格式,并用彩色通道绘制冲浪函数创建一个简单的PPI图像。

支持功能

helperMakeExtendedTarget

函数helperMakeExtendedTarget(场景,弄暗,totrcs pos、hdg spd, rngres)向场景中添加一组点目标以表示一个长方体目标。scatSpacing = rngres*.8;nScatsPerDim = ceil(dims/scatSpacing);platB = rotz(hdg);Losrdr = -pos(:);losrdr = platB.'*losrdr;如果Losrdr (1) < -dims(1)/2如果losrdr(2) < -dims(2)/2 sideFaces =“ws”elseiflosrdr(2) < dims(2)/2 sideFaces =' w '其他的sideFaces =“wn”结束elseifLosrdr (1) < dims(1)/2如果losrdr(2) < -dims(2)/2 sideFaces =“年代”elseifLosrdr (2) < dims(2)/2 error(“雷达在目标内部”其他的sideFaces =“n”结束其他的如果losrdr(2) < -dims(2)/2 sideFaces =“西文”elseiflosrdr(2) < dims(2)/2 sideFaces =“e”其他的sideFaces =“en”结束结束xd = linspace(-dims(1)/2,dims(1)/2,nScatsPerDim(1));yd = linspace(-dims(2)/2,dims(2)/2,nScatsPerDim(2));zd = linspace(-dims(3)/2,dims(3)/2,nScatsPerDim(3));X = [];Y = [];Z = [];ind = 1:numel(sideFaces)开关sideFaces(印第安纳州)情况下“e”[y0,z0] = meshgrid(yd,zd);X0 = dims(1)/2*ones(size(y0));情况下“n”[x0,z0] = meshgrid(xd,zd);Y0 = dims(2)/2*ones(size(x0));情况下' w '[y0,z0] = meshgrid(yd,zd);X0 = -dims(1)/2*ones(size(y0));情况下“年代”[x0,z0] = meshgrid(xd,zd);Y0 = -dims(2)/2*ones(size(x0));结束X = [X, x0(:).'];Y = [Y, y0(:).'];Z = [Z, z0(:).'];结束propRcsSide = 0.5;%比例的RCS放在目标的两侧rcs = totrcs*propRcsSide/numel(x)*ones(size(x));%顶面[x0,y0] = meshgrid(xd,yd);Z0 = dims(3)/2*ones(size(x0));X = [X, x0(:).'];Y = [Y, y0(:).'];Z = [Z, z0(:).'];rcs = [rcs, totrcs*(1- proprcsside)/numel(x0)*ones(1,numel(x0))];%旋转[x, y, z] =交易(platB (1,1) * x + platB(1、2)* y + platB(1、3)* z,...platB (2, 1) * x + platB (2, 2) * y + platB(2、3)* z,...platB (3,1) * x + platB (3 2) * y + platB (3,3) * z);%翻译X = X + pos(1);Y = Y + pos(2);Z = Z + pos(3) + dims(3)/4;ind = 1: numl (x) traj = kinematicTrajectory(“位置”,[x(ind) y(ind) z(ind)],“速度”,spd*[cosd(hdg) sind(hdg) 0]);平台(场景,“轨迹”traj,“签名”rcsSignature (“模式”, 10 * log10 (rcs(印第安纳州))));结束结束

helperPlotScenarioGeometry

函数helperPlotScenarioGeometry (rdrHeight seaLength depang,数组,频率,tgtpos)绘制场景的可视化图Fh =图;%的表面T = 0:10:360;r = linspace(0,seaLength/2,10).';X = r.*cosd(t);Y = r.*sind(t);冲浪(x / 1 e3, y / 1 e3, 0(大小(x)), repmat(排列([0 1 1],[1 3 2]),[大小(x) 1]),“EdgeColor”“没有”)举行天线图Az = linspace(-6,6,80);maxEl = -atand(2*rdrHeight/seaLength);el = linspace(-90,maxEl,80);G = pattern(array,freq,az,el+depang);[az,el] = meshgrid(az,el);[x,y,~] = sph2cart(az*pi/180,el*pi/180,1);rtg = rdrHeight./sind(-el);冲浪(x。*轮胎式龙门吊e3 / 1, y。*轮胎式龙门吊/ 1 e3, 1依照*的(大小(x)), G,“EdgeColor”“没有”%的雷达rdrHeight plot3 (0, 0,“o”line([0 0],[0 0],[0 rdrHeight],“颜色”“黑”“线型”“——”%的目标plot3 (tgtpos (1) / 1 e3, tgtpos (2) / 1 e3, tgtpos (3),“* r”)举行文本(0,0,rdrHeight * 1.1,“雷达”)文本(tgtpos (1) * .8/1e3 tgtpos (2) * 1.1/1 e3, rdrHeight / 10,“目标”)文本(seaLength / 4/1e3、200/1e3 rdrHeight / 10,“梁模式”)文本(-seaLength / 4/1e3 seaLength / 4/1e3 rdrHeight / 10,“海面”)包含(“X(公里)) ylabel (“Y”(公里)) zlabel (“Z (m)”)标题(“场景几何”) cl = clim;Clim ([cl(2)-30 cl(2)]) fh。位置= fh。位置+ [0 0 150 150];视图([-11 58])结束
Baidu
map