主要内容

雷达接收机模拟测试信号

这个例子展示了如何模拟单基地脉冲雷达的接收信号来估计目标距离。单基地雷达使发射机与接收机配置在一起。发射机产生一个击中目标的脉冲,并产生一个被接收机接收的回波。通过实时测量回波的位置,我们可以估计目标的距离。

这个例子集中在一个脉冲上雷达系统设计其中可以实现一套设计规范。它概述了将设计规范(如探测概率和距离分辨率)转换为雷达系统参数(如发射功率和脉冲宽度)的步骤。它还对环境和目标进行建模,以合成接收到的信号。最后,将信号处理技术应用于接收信号,检测目标的距离。

设计规范

该脉冲雷达系统的设计目标是在距离雷达5000米,距离分辨率为50米的范围内探测到至少一平方米雷达截面(RCS)的非波动目标。期望的性能指标是检测概率(Pd)为0.9,虚警概率(Pfa)低于1e-6。由于相干检测需要相位信息,因此计算成本较高,我们采用了非相干检测方案。此外,本示例假设一个自由空间环境。

pd = 0.9;%检测概率pfa = 1 e-6;%误报概率max_range = 5000;最大明确范围range_res = 50;所需距离分辨率tgt_rcs = 1;所需目标雷达截面

单基地雷达系统设计

我们需要定义雷达系统的几个特征,如波形、接收机、发射机和用于辐射和收集信号的天线。

波形

在这个例子中,我们选择一个矩形波形。所要求的距离分辨率决定了波形的带宽,在矩形波形的情况下,带宽决定了脉冲宽度。

脉冲波形的另一个重要参数是脉冲重复频率(PRF)。PRF由最大无歧义范围决定。

prop_speed = physconst (“光速”);%传播速度pulse_bw = prop_speed / (2 * range_res);%脉冲带宽pulse_width = 1 / pulse_bw;%脉冲宽度脉冲重复频率= prop_speed / (2 * max_range);脉冲重复频率fs = 2 * pulse_bw;%采样率波形=分阶段。RectangularWaveform (...“脉冲宽度”1 / pulse_bw,...脉冲重复频率的脉冲重复频率,...“SampleRate”fs);

注意,我们将采样率设置为带宽的两倍。

接收机噪声特征

我们假设接收机上唯一的噪声是热噪声,所以在这个模拟中没有杂波。热噪声的功率与接收机带宽有关。接收器的噪声带宽被设置为与波形带宽相同。这在实际系统中经常出现。我们还假设接收机的增益为20 dB,噪声为0 dB。

noise_bw = pulse_bw;接收机=分阶段。ReceiverPreamp (...“获得”, 20岁,...“NoiseFigure”0,...“SampleRate”fs,...“EnableInputPort”,真正的);

请注意,因为我们正在模拟单基地雷达,只有在发射机关闭后,接收机才能打开。因此,我们将EnableInputPort属性设置为true,以便同步信号可以从发送端传递到接收端。

发射机

发射机最关键的参数是发射功率峰值。所要求的峰值功率与许多因素有关,包括最大无模糊距离、接收机所要求的信噪比和波形的脉宽。其中,接收机所需的信噪比是由Pd和Pfa的设计目标以及接收机实现的检测方案决定的。

Pd、Pfa和信噪比之间的关系可以用ROC曲线来表示。我们可以使用以下命令生成曲线,其中Pd是Pfa的函数,用于改变信噪比

Snr_db = [-inf, 0, 3, 10, 13];rocsnr (snr_db“SignalType”“NonfluctuatingNoncoherent”);

ROC曲线表明,要满足Pfa = 1e-6和Pd = 0.9的设计目标,接收信号的信噪比必须超过13 dB。这是一个相当高的要求,并不是很实际。为了使雷达系统更加可行,我们可以使用脉冲积分技术来降低所需的信噪比。如果我们选择积分10个脉冲,曲线可以生成为

num_pulse_int = 10;rocsnr ([0 3 5],“SignalType”“NonfluctuatingNoncoherent”...“NumPulses”, num_pulse_int);

我们可以看到所需的功率已经下降到5分贝左右。进一步降低信噪比可以通过对更多脉冲进行积分来实现,但由于目标的运动或环境的异质性,可供积分的脉冲数量通常有限。

上述方法从曲线中读出信噪比值,但通常只计算所需的值。对于非相干检测方案,理论上所需信噪比的计算相当复杂。幸运的是,有一些很好的近似可用,例如Albersheim方程。利用Albersheim方程,可得所需信噪比为

Snr_min = albersheim(pd, pfa, num_pulse_int)
snr_min = 4.9904

一旦我们得到接收机所需的信噪比,就可以利用雷达方程计算发射机的峰值功率。这里我们假设发射机的增益为20db。

为了利用雷达方程计算峰值功率,我们还需要知道传播信号的波长,它与系统的工作频率有关。这里我们将工作频率设置为10ghz。

tx_gain = 20;fc = 10 e9;λ= prop_speed / fc;peak_power =((4 *π)^ 3 * noisepow (1 / pulse_width) * max_range ^ 4 *...db2pow (snr_min)) / (db2pow (2 * tx_gain) * tgt_rcs *λ^ 2)
peak_power = 5.2265 e + 03

注意,产生的功率大约是5千瓦,这是非常合理的。相比之下,如果我们没有使用脉冲积分技术,得到的峰值功率将是33千瓦,这是巨大的。

有了这些信息,我们就可以配置发射器了。

发射机=分阶段。发射机(...“获得”tx_gain,...“PeakPower”peak_power,...“InUseOutputPort”,真正的);

同样,由于本例模拟的是单站雷达系统,因此InUseOutputPort被设置为true以输出发射器的状态。这个状态信号可以用来启用接收器。

散热器和收藏家

在雷达系统中,信号以电磁波的形式传播。因此,雷达系统中需要使用天线进行信号的辐射和采集。这就是散热器和集热器进入画面的地方。

在单基地雷达系统中,辐射体和集电极共用同一天线,因此我们首先定义天线。为了简化设计,我们选择了各向同性天线。需要注意的是天线需要能够工作在系统的工作频率(10ghz),所以我们将天线的频率范围设置为5- 15ghz。

我们假设天线是静止的。

天线=分阶段。IsotropicAntennaElement (...“FrequencyRange”[5 e9 15 e9]);sensormotion =分阶段。平台(...“InitialPosition”, (0;0;0),...“速度”, (0;0;0]);

根据天线和工作频率,我们定义了散热器和集电极。

散热器=分阶段。散热器(...“传感器”、天线、...“OperatingFrequency”、fc);收集器=分阶段。收集器(...“传感器”、天线、...“OperatingFrequency”、fc);

这就完成了雷达系统的配置。在下面的部分中,我们将定义其他实体,例如模拟所需的目标和环境。然后我们将模拟信号返回,并对模拟信号执行距离检测。

系统仿真

目标

为了测试我们的雷达探测目标的能力,我们必须先确定目标。让我们假设在空间中有3个静止的、不波动的目标。它们的位置和雷达截面如下。

tgtpos = [(2024.66, 0, 0), [3518.63, 0, 0], [3845.04, 0, 0]];tgtvel = [(0, 0, 0), (0, 0, 0), [0, 0, 0]];tgtmotion =分阶段。平台(“InitialPosition”tgtpos,“速度”, tgtvel);TGTRCS = [1.6 2.2 1.05];=阶段性目标。RadarTarget (“MeanRCS”tgtrcs,“OperatingFrequency”、fc);

传播环境

为了模拟信号,我们还需要定义雷达系统与每个目标之间的传播信道。

频道=分阶段。空闲空间(...“SampleRate”fs,...“TwoWayPropagation”,真的,...“OperatingFrequency”、fc);

由于本例使用单基地雷达系统,信道被设置为模拟双向传播延迟。

信号合成

现在我们可以模拟整个系统了。

合成信号是一个数据矩阵,每一列有快时间(每个脉冲内的时间),每一行有慢时间(脉冲之间的时间)。为了使信号可视化,定义快时间网格和慢时间网格是有帮助的。

fast_time_grid = unigrid (0,1 / fs, 1 /脉冲重复频率,“()”);slow_time_grid = (0: num_pulse_int-1) /脉冲重复频率;

下面的环路模拟接收信号的10个脉冲。

我们在接收器中设置了产生噪声的种子,这样我们就可以重现相同的结果。

接收器。SeedSource =“属性”;接收器。种子= 2007;%预分配数组以提高处理速度rxpulses = 0(元素个数(fast_time_grid) num_pulse_int);m = 1: num_pulse_int%更新传感器和目标位置[sensorpos, sensorvel] = sensormotion(1 /脉冲重复频率);[tgtpos, tgtvel] = tgtmotion(1 /脉冲重复频率);%计算传感器看到的目标角度[tgtrng, tgtang] = rangeangle (tgtpos sensorpos);模拟脉冲在目标方向上的传播脉冲=波形();[txsig, txstatus] =发射机(脉冲);txsig =散热器(txsig tgtang);txsig =通道(txsig sensorpos、tgtpos sensorvel, tgtvel);反射目标的脉冲tgtsig =目标(txsig);在传感器接收目标返回rxsig =收集器(tgtsig tgtang);rxpulses (:, m) =接收机(rxsig ~ (txstatus > 0));结束

检测范围

检测阈值

检测器将信号功率与给定阈值进行比较。在雷达应用中,通常选择阈值使Pfa低于某一水平。在这种情况下,我们假设噪声是高斯白噪声,检测是非相干的。由于我们也使用10个脉冲进行脉冲积分,因此信号功率阈值为

npower = noisepow (noise_bw接收器。NoiseFigure,...receiver.ReferenceTemperature);npwgnthresh(pfa,num_pulse_int,“非相干”));

我们用阈值画出前两个接收到的脉冲

num_pulse_plot = 2;helperRadarPulsePlot (rxpulses阈值,...fast_time_grid、slow_time_grid num_pulse_plot);

这些数字中的阈值仅供展示之用。注意,第二个和第三个目标的返回比第一个目标的返回要弱得多,因为它们离雷达更远。因此,接收信号功率与距离有关,阈值对不同距离的目标不公平。

匹配滤波器

匹配滤波器提供了一个处理增益,提高了检测阈值。它将接收到的信号与发射波形的时间反转的局部共轭副本进行卷积。因此,我们必须在创建匹配滤波器时指定传输波形。接收到的脉冲首先通过匹配滤波器来提高信噪比,然后再进行脉冲积分、阈值检测等。

matchingcoeff = getMatchedFilter(波形);matchedfilter =分阶段。MatchedFilter (...“系数”matchingcoeff,...“GainOutputPort”,真正的);[rx脉冲,mfgain] = matchedfilter(rx脉冲);

匹配滤波器引入了一个固有的滤波器延迟,使得峰值的位置(输出样本的最大信噪比)不再与真正的目标位置对齐。为了补偿这个延迟,在本例中,我们将向前移动匹配滤波器的输出,并在末尾填充零。请注意,在真实的系统中,由于数据是连续收集的,所以确实没有结束。

matchingdelay =大小(matchingcoeff, 1) 1;rxpulses =缓冲区(rxpulses (matchingdelay + 1:结束),大小(rxpulses, 1));

然后通过匹配滤波器处理增益来增加阈值。

Threshold = Threshold * db2pow(mfgain);

下面的图显示了经过匹配滤波器后的两个相同的脉冲。

helperRadarPulsePlot (rxpulses阈值,...fast_time_grid、slow_time_grid num_pulse_plot);

经过匹配滤波阶段后,信噪比得到改善。然而,由于接收到的信号功率依赖于距离,近目标的回波仍然比远目标的回波强得多。因此,如上图所示,来自近距离bin的噪声也有很大的机会超过阈值,使目标离得更远。为了保证阈值对探测范围内的所有目标都是公平的,我们可以使用时变增益来补偿接收回波的距离相关损失。

为了补偿距离相关的损耗,我们首先计算每个信号样本对应的距离门,然后计算每个距离门对应的自由空间路径损耗。一旦获得了该信息,我们对接收的脉冲施加一个时变增益,这样返回就好像来自相同的参考范围(最大可检测范围)。

range_gates = prop_speed * fast_time_grid / 2;tvg =分阶段。TimeVaryingGain (...“RangeLoss”2 * fspl (range_gatesλ),...“ReferenceLoss”2 * fspl (max_rangeλ));rxpulses = tvg (rxpulses);

现在让我们在距离归一化后画出相同的两个脉冲

helperRadarPulsePlot (rxpulses阈值,...fast_time_grid、slow_time_grid num_pulse_plot);

时变增益操作导致噪声层出现斜坡。然而,目标回报率现在是独立于范围的。一个恒定的阈值现在可以用于整个可检测范围的检测。

注意,在这个阶段,阈值高于每个脉冲所包含的最大功率水平。因此,在这个阶段还不能检测到任何东西。我们需要进行脉冲集成,以确保从目标返回的回波功率可以超过阈值,同时使噪声下限低于条形线。这是预期的,因为它是脉冲集成,允许我们使用低功率脉冲序列。

非相干积分

通过对接收脉冲进行非相干积分(视频积分)可以进一步提高信噪比。

rxpulses = pulsint (rxpulses,“非相干”);helperRadarPulsePlot (rxpulses阈值,...fast_time_grid slow_time_grid 1);

视频集成阶段结束后,数据就可以进入最后的检测阶段了。从图中可以看出,目标的三个回波都在阈值以上,因此可以检测到。

检测范围

最后,对积分脉冲进行阈值检测。该检测方案识别出峰值,然后将其位置转换为目标的范围。

[~, range_detect] = findpeaks (rxpulses,“MinPeakHeight”返回值(阈值));

目标的真实距离和探测距离如下:

true = round(tgtrng); true = round(tgtrng);
True_range = 2025 3519 3845

注意,这些距离估计只能精确到雷达系统所能达到的距离分辨率(50米)。

总结

在这个例子中,我们基于一组给定的性能目标设计了一个雷达系统。根据这些性能目标,计算了雷达系统的许多设计参数。该实例还演示了如何使用设计的雷达执行距离探测任务。在这个例子中,雷达使用了矩形波形。有兴趣的读者可以参考改进现有系统测距性能的波形设计以啁啾波形为例。