主要内容

使用均匀矩形阵列的电子扫描

本例模拟了一个相控阵雷达,该雷达定期扫描预定义的监视区域。该雷达采用900元矩形阵列。介绍了根据规范推导雷达参数的步骤。综合接收到的脉冲后,进行检测和距离估计。最后,利用多普勒估计得到每个目标的速度。

雷达的定义

首先,我们创建一个相控阵雷达。我们重用示例中构建的大多数子系统雷达接收机模拟测试信号.鼓励读者探索的细节雷达系统设计通过这个例子。一个主要的区别是我们使用了一个30乘30的均匀矩形阵列(URA)来代替原来的单天线。

现有雷达设计满足以下规范。

Pd = 0.9;%检测概率Pfa = 1e-6;误报概率%Max_range = 5000;最大明确范围Tgt_rcs = 1;%所需目标雷达截面Int_pulsenum = 10;要积分的脉冲数

加载雷达系统,检索系统参数。

负载BasicMonostaticRadarExampleData;fc =散热器。操作频率;%工作频率(Hz)v =散热器。传播速度;%波传播速度(m/s)= v/fc;%波长(m)fs = format . samplerate;采样频率(Hz)prf =波形。prf;%脉冲重复频率(Hz)

接下来,我们定义一个30 × 30的均匀矩形数组。

Ura =阶段性。(精“元素”、天线、...“大小”, 30 (30),“ElementSpacing”,(λ/ 2,λ/ 2));配置天线元件,使它们只向前传输。ura. element . backbaffle = true;可视化的反应模式。模式(ura所言,足球俱乐部,“PropagationSpeed”physconst (“光速”),...“类型”“powerdb”);

将阵列与散热器和收集器关联。

散热器。传感器= ura;收集器。传感器= ura;我们需要将WeightsInputPort属性设置为true以启用它接受发射波束形成权值散热器。WeightsInputPort = true;

现在我们需要重新计算发射功率。基于单天线计算了原始发射功率。对于一个包含900个元素的数组,每个元素所需的功率要小得多。

计算数组增益Arraygain =相控的。ArrayGain (“SensorArray”ura所言,“PropagationSpeed”, v);Ag = arraygain(fc,[0;0]);计算峰值功率Snr_min = albersheim(pd, pfa, int_pulsenum);peak_power = ((4*pi)^3*noisepow(1/wave . pulsewidth)*max_range^4*...db2pow (snr_min)) / (db2pow (2 * (transmitter.Gain + ag)) * tgt_rcs *λ^ 2)
Peak_power = 0.0065

新的峰值功率为0.0065瓦。

%设置发射器的峰值功率发射机。PeakPower = peak_power;

我们还需要设计相控阵的扫描计划。为了简化示例,我们只在方位角维度中搜索。我们要求雷达在方位角45度到-45度范围内搜索。重访时间应小于1秒,即雷达应在1秒内重访相同方位角。

initialAz = 45;endAz = -45;volumnAz = initialAz - endAz;

为了确定所需的扫描次数,我们需要知道阵列响应的波束宽度。我们使用经验公式来估计3-dB的波束宽度。

G 4 π θ 2

在哪里 G 数组是否增益和 θ 为3db波束宽度。

计算3-dB波束宽度Theta = radtodeg(根号(4*pi/db2pow(ag)))
= 6.7703

3db的波束宽度为6.77度。为了允许一些光束在空间上重叠,我们选择扫描步长为6度。

Scanstep = -6;scangrid = initialAz+scanstep/2:scanstep:endAz;Numscans =长度(scangrid);Pulsenum = int_pulsenum*numscans;计算复诊时间重温时间= pulsenum/prf
revisitTime = 0.0050

最终的复查时间为0.005秒,远低于规定的1秒上限。

目标定义

我们想要模拟来自两个高度均为0度的非波动目标的脉冲返回。第一个目标正在接近雷达,而第二个目标正在远离雷达。

Tgtpos = [[3532.63;800;0], [2020.66;0;0]];Tgtvel = [[-100;50;0], [60;80;0]]; tgtmotion = phased.Platform(“InitialPosition”tgtpos,“速度”, tgtvel);TGTRCS = [1.6 2.2];目标=阶段性。RadarTarget (“MeanRCS”tgtrcs,“OperatingFrequency”、fc);计算目标的范围,角度和速度[tgtrng,tgtang] = rangeangle(tgtmotion.)InitialPosition,...sensormotion.InitialPosition);numtargets = length(target. meancs);

脉冲合成

既然已经定义了所有子系统,我们就可以继续模拟接收到的信号了。总模拟时间对应于通过监视区域的一次。由于反射信号由阵列接收,我们使用指向转向方向的波束形成器来获得组合信号。

为发射波束形成创建转向矢量Steeringvec =相控。SteeringVector (“SensorArray”ura所言,...“PropagationSpeed”, v);创建接收波束形成器波束形成器=相控。PhaseShiftBeamformer (“SensorArray”ura所言,...“OperatingFrequency”足球俱乐部,“PropagationSpeed”v,...“DirectionSource”输入端口的);为每个目标定义传播通道通道=分阶段。空闲空间(...“SampleRate”fs,...“TwoWayPropagation”,真的,...“OperatingFrequency”、fc);Fast_time_grid = unigrid(0, 1/fs, 1/prf,“()”);%预分配数组以提高处理速度rxpulse =零(数字(fast_time_grid),pulsenum);M = 1:脉冲更新传感器和目标位置[sensorpos,sensorvel] =感应运动(1/prf);[tgtpos,tgtvel] = tgtmotion(1/prf);计算传感器所看到的目标角度[tgtrng,tgtang] = rangeangle(tgtpos,sensorpos);计算当前扫描角度的转向矢量Scanid = floor((m-1)/int_pulsenum) + 1;Sv = steeringvec(fc,scangrid(scanid));W = conj(sv);形成该扫描角度的发射光束并模拟传播脉冲=波形();[txsig,txstatus] =发射器(脉冲);Txsig =散热器(Txsig,tgtang,w);Txsig = channel(Txsig,sensorpos,tgtpos,sensorvel,tgtvel);%反射目标的脉冲Tgtsig = target(txsig);传感器接收到的目标返回的%波束Rxsig = collector(tgtsig,tgtang);Rxsig = receiver(Rxsig,~(txstatus>0));rxpulse (:,m) =波束形成器(rxsig,[scangrid(scanid);0]);结束

匹配滤波器

为了处理接收到的信号,我们首先让它通过一个匹配的滤波器,然后对每个扫描角度的所有脉冲进行积分。

匹配过滤matchingcoeff = getMatchedFilter(波形);Matchedfilter =相控。MatchedFilter (...“系数”matchingcoeff,...“GainOutputPort”,真正的);[mf_pulsed, mfgain] = matchedfilter(rxpulsed);mf_pulse =重塑(mf_pulse,[],int_pulsenum,numscans);匹配延迟= size(matchingcoeff,1)-1;sz_mfpulse = size(mf_pulse);mf_脉冲= [mf_脉冲(匹配延迟+1:结束)0(1,匹配延迟)];mf_pulse =重塑(mf_pulse,sz_mfpulse);脉冲积分int_pulse = pulsint(mf_pulse,“非相干”);int_脉冲=挤压(int_脉冲);%可视化R = v*fast_time_grid/2;X = r'*cosd(scangrid);Y = r'*sind(scangrid);clf;pcolor (X, Y, pow2db (abs (int_pulses)。^ 2));轴平等的阴影插值函数文本(-800 0“数组”);文本((max (r) + 10) * cosd (initialAz), (max (r) + 10) *信德(initialAz),...[num2str (initialAz)“阿^”]);文本((max (r) + 10) * cosd (endAz), (max (r) + 10) *信德(endAz),...[num2str (endAz)“阿^”]);文本((max (r) + 10) * cosd (0) (max (r) + 10) *信德(0)[num2str (0)“阿^”]);colorbar;

从扫描图中,我们可以清楚地看到两个峰。近的在方位角0度左右,远的在方位角10度左右。

检测与距离估计

为了获得目标参数的准确估计,我们在扫描地图上应用阈值检测。首先,我们需要通过对接收到的信号应用时变增益来补偿由于距离造成的信号功率损失。

Range_gates = v*fast_time_grid/2;TVG =分阶段。TimeVaryingGain (...“RangeLoss”2 * fspl (range_gatesλ),...“ReferenceLoss”2 * fspl (max (range_gates),λ));tvg_脉冲= tvg(mf_脉冲);脉冲积分int_pulse = pulsint(tvg_pulse,“非相干”);int_脉冲=挤压(int_脉冲);%计算检测阈值%采样率是设计系统噪声带宽的两倍noise_bw = receiver.SampleRate/2;Npower = noisepow(noise_bw,...receiver.NoiseFigure receiver.ReferenceTemperature);阈值= npower * db2pow(npwgnthresh(pfa,int_pulsenum,“非相干”));%将阈值增加匹配的滤波处理增益阈值=阈值* db2pow(mfgain);

现在我们将检测过程可视化。为了更好地表示数据,我们只绘制超过50的范围样本。

N = 51;clf;冲浪(X (N:,:), Y (N:最终,),...pow2db (abs (int_pulses (N:最终,))^ 2));持有;网格(X (N:,:), Y (N:最终,),...pow2db(阈值*的(大小(X (N:最终,)))),“FaceAlpha”, 0.8);视图(0,56);轴

在检测阈值以上有两个可见的峰值,对应于我们前面定义的两个目标。我们可以找到这些峰值的位置,并估计每个目标的范围和角度。

[~,peakInd] = findpeaks(int_pulse (:),“MinPeakHeight”返回值(阈值));[rngInd,angInd] = ind2sub(size(int_pulse),peakInd);est_range = range_gates(rngInd);%估计范围est_angle = scangrid(angInd);估计方向

多普勒估计

接下来,我们要估计每个目标的多普勒速度。关于多普勒估计的详细介绍请参见示例多普勒估计

m = numtargets:-1:1 [p, f] = periodogram(mf_pulse (rngInd(m),:,angInd(m)),[],256,prf,...“权力”“中心”);Speed_vec = dop2speed(f,lambda)/2;Spectrum_data = p/max(p);[~,dop_detect1] = findpeaks(pow2db(spectrum_data),“MinPeakHeight”5);Sp (m) = speed_vec(dop_detect1);估计多普勒速度%结束

最后,我们估计了两个被检测目标的所有参数。下面是参数估计值和真实值的比较。

------------------------------------------------------------------------ (真正的)目标参数估计  ------------------------------------------------------------------------ 范围(m)方位角(度)速度(米/秒)目标1:3625.00(3622.08)12.00(12.76)86.01(86.49)目标2:2025.00 (2020.66)0.00 (0.00)-59.68 (-60.00)

总结

在本例中,我们展示了如何模拟相控阵雷达来扫描预定义的监视区域。我们举例说明了如何设计扫描时间表。采用常规波束形成器对接收到的多路信号进行处理。从反射脉冲中提取每个目标的距离、角度和多普勒信息。这些信息可以用于进一步的任务,如高分辨率的到达方向估计,或目标跟踪。