Engee 文档
Notebook

白噪声背景下的信号检测

这个例子考察了在复杂高斯噪声背景下检测确定性信号。 这种情况经常出现在雷达、声纳和通信系统中。

导言

有许多不同类型的探测器用于各种应用。 其中最流行的是贝叶斯检测器,最大似然检测器和Neiman-Pearson准则(NCP)检测。 在雷达和声纳系统中,KNP是最受欢迎的选择,因为它可以提供给定水平的虚警概率。

在这个例子中,我们将把自己限制在一个场景中,信号是确定性的,噪声是白色和高斯。

该示例涵盖以下部分:相干检测、非相干检测、匹配滤波和接收器检测曲线(ROC)。

信号和噪声模型

假设接收信号对应于模型:

\开始{对齐}
x(t)=s(t)+n(t)
\结束{对齐}
哪里 "一个信号,诶 -噪音。

假设信号功率为1瓦,噪声功率根据信噪比(SNR)相应确定。 例如,对于10dB的SNR,噪声功率,即噪声色散,将为0.1瓦。

一致的过滤

接收器通常使用匹配滤波器来提高SNR。 从离散信号的观点来看,匹配滤波器的系数被设置为相对于发射信号的复共轭值。

在处理复杂信号和噪声时,有两种类型的接收器。 第一种类型是相干接收机,其假定接收信号的幅度和相位是已知的。 这导致匹配滤波器的系数与s信号之间的完美匹配。 因此,匹配滤波器的系数可以被认为是共轭信号s。

\开始{对齐}
y=s*x=s*(s+n)=|s|2+s*n\。
\结束

注意,虽然一般输出是 它仍然是一个复杂的数量,信号完全由 ,它是一个实数,包含在共模分量中 . 因此,相干接收机中跟随匹配滤波器的检测器通常只使用接收信号的实部。 这种接收器通常提供最佳性能。 然而,相干接收机容易受到相位误差的影响。 此外,相干接收机需要额外的设备来执行相位检测。 对于非相干接收机,接收信号被建模为具有随机相位误差的原始信号的副本。 在非相干检测的情况下,在匹配滤波器之后使用信号的功率来考虑共模和正交分量。

探测器

决策规则CNP的目标函数可以写成

\开始{对齐}
J=P_d+g(P_{fa}-a),
\结束

即最大化检测概率 ,同时限制虚警的概率 方程中的变量g是拉格朗日乘数。 NP检测器可以形成为似然比检验。 如下:

\开始{对齐}
\frac{p_y(y|H_1)}{p_y(y|H_0)}{{H_1\top>}\top{<\top H_0}}Th\。
\结束

在这种特殊情况下 由于误报仅由噪声引起,阈值 由噪声确定,以确保固定 . 一般观点 上面显示的一个通常很难评估。 在现实世界的应用中,我们经常使用来自信号的一个容易计算的值,即足够的统计量来代替两个概率密度函数的比率。 例如,足够的统计数据 它可以简单到

\开始{对齐}
z=|y/
\结束

然后简化的检测器变成

\开始{对齐}
z{{H_1\top>}\top{<\top H_0}}T\。
\结束

T是足够z统计量的阈值,作用方式与用于LRT的Th阈值相同。 因此,阈值不仅与概率分布有关,而且还取决于足够统计量的选择。

使用相干接收器检测单个样本

首先,我们将看一个使用单个样本检测噪声信号的示例。

假设信号为单位功率采样,SNR为3dB。 使用100,000次尝试的蒙特卡罗模拟,我们生成的信号和噪声如下

In [ ]:
Pkg.add(["DSP"])
In [ ]:
using Random,DSP
# fix the random number generator
seed = 2024
rstream =  Xoshiro(seed)

Ntrial = Int64(1e5); #  количество попыток Монте-Карло
snrdb = 3; # ОСШ в dB
snr = db2pow(snrdb);# ОСШ в абсолютных единицах
spower = 1;               # мощность сигнала, Вт
npower = spower/snr; # мощность шума
namp = sqrt(npower/2); # амплитуда шума в каждом канале
s = ones(1,Ntrial);       # генерация сигнала
n = namp*(randn(rstream,1,Ntrial)+1im*randn(rstream,1,Ntrial));  # шум

请注意,噪声是复杂的,白色和高斯分布的。

如果接收信号包含目标,则其值为

In [ ]:
x = s + n; # смесь сигнал с шумом

在这种情况下,匹配滤波器是微不足道的,因为信号本身是单个样本。

In [ ]:
mf = 1;

在这种情况下,匹配滤波器的增益为1,因此SNR中没有增益。

现在我们将执行检测和检查检测器操作。 对于相干接收机,经过匹配滤波器后的接收信号具有形式

In [ ]:
y = mf'*x; # применение согласованного фильтра;

一个足够的统计量,即用于与检测阈值比较的值,对于一个相干检测器来说是经过匹配滤波器后接收信号的实部,即,

In [ ]:
z = real(y);

假设我们要修复 . 给予足够的统计数字 决策规则如下所示

\开始{对齐}
z{{H_1\顶上>}\顶上{<\顶上H_0}}T
\结束

门槛在哪里 与...... 如下:

\开始{对齐}
P_{fa}=\frac{1}{2}\左[1-{\rm
erf}\左(\frac{T}{\sqrt{NM}}\右)\右]
\结束

在该公式中,N是信号功率,M是匹配滤波器的增益。 注意,T是经过匹配滤波器后的信号的阈值,NM是经过匹配滤波器后的噪声功率,因此 它可以被认为是信号的幅度和噪声之间的比率,即它与信噪比SNR有关。 由于SNR通常被称为信号功率和噪声之间的比率,给定该表达式中每个量的测量单位,我们可以看到

\开始{对齐}
\frac{T}{\sqrt{NM}}=\sqrt{\rm SNR}\。
\结束

由于n和M在选择噪声和信号的形状之后是固定的,因此T和SNR之间存在对应关系。 给定T是信号的阈值,SNR可以被认为是信噪比的阈值。 因此,阈值方程可以改写为

\开始{对齐}
P_{fa}=\frac{1}{2}\左[1-{\rm
erf}\左({\sqrt{SNR}}\右)\右]
\结束

NP检测器的复白高斯噪声所需的SNR阈值可以使用npwgnthresh函数计算,如下所示:

In [ ]:
Pfa = 1e-3;
snrthreshold = db2pow(npwgnthresh(Pfa, 1,"coherent"));

注意,该阈值虽然也具有SNR值的形式,但与接收信号的SNR不同。 SNR阈值是基于期望的检测效率的计算值,在这种情况下是Pfa;而接收信号的SNR是信号的物理特性,由传播介质,波形,发射功率等确定。

真阈值T可以从该SNR阈值中获得为

\开始{对齐}
T=\sqrt{NM}\cdot\sqrt{\rm SNR}。
\结束

In [ ]:
mfgain = mf'*mf;
# Для соответствия уравнению в тексте выше:
# npower - N 
# mfgain - M 
# snrthreshold - SNR
threshold = sqrt(npower*mfgain*snrthreshold);

通过将信号与阈值进行比较来执行检测。 由于原始信号s在接收信号中表示,因此当接收信号通过阈值(即z>T)时,就会发生成功的检测。检测器检测目标的能力通常由Pd测量。 在蒙特卡罗仿真中,Pd可以计算为信号通过阈值的次数与测试总数的比率。

In [ ]:
Pd = sum(z.>threshold)/Ntrial
print("Pd = $(Pd)")
Pd = 0.13665

另一方面,当检测表明存在目标时发生虚警,但实际上没有,即当仅存在噪声时接收信号通过阈值。 当没有目标时检测目标时,检测器错误的概率被定义为Pfa。

In [ ]:
x = n;
y = mf'*x;
z = real(y);
Pfa = sum(z.>threshold)/Ntrial
print("Pfa = $(Pfa)")
Pfa = 0.00098

这符合我们的要求。

为了在图上看到SNR、Pd和Pfa之间的关系,我们可以使用rocsnr函数为3dB SNR值绘制理论ROC曲线,如下所示

In [ ]:
rocsnr(snrdb,SignalType="NonfluctuatingCoherent",MinPfa=1e-4)
Out[0]:

从图中可以看出,对于3dB的SNR值,上面获得的测量值Pd=0.1390和Pfa=0.0009对应于ROC曲线上的理论点。

使用非相干接收器检测单个样品

非相干接收机考虑了接收信号的相位,因此,对于所考虑的情况,信号x包含相位项并且被定义为

In [ ]:
# simulate the signal
x = s.*exp.(1im*2*pi*rand(rstream,1,Ntrial)) .+ n;
y = mf'*x;

当使用非相干接收器时,匹配滤波器后接收信号的功率(或幅度)用于与阈值进行比较。 在这个模拟中,我们选择一个值作为足够的统计量。

In [ ]:
z = abs.(y);

鉴于我们选择足够的z统计量,阈值与Pfa方程相关

\开始{对齐}
P_{fa}={\rm exp}\左(-\frac{T^2}{NM}\右)={\rm exp}(-{\rm SNR})\。
\结束

用于NP检测器的信噪比SNR的阈值可以使用npwgnthresh计算如下:

In [ ]:
snrthreshold = db2pow(npwgnthresh(Pfa, 1,"noncoherent"));

阈值T是根据SNR确定的,如下所示

In [ ]:
mfgain = mf'*mf;
threshold = sqrt(npower*mfgain*snrthreshold);

再次,Pd可以使用

In [ ]:
Pd = sum(z.>threshold)/Ntrial
print("Pd = $(Pd)")
Pd = 0.06156

请注意,由此产生的Pd不如我们从相干接收器获得的性能。

如果没有目标,则接收信号仅包含噪声。 我们可以使用蒙特卡罗模拟计算Pfa为

In [ ]:
x = n;
y = mf'*x;
z = abs.(y);
Pfa = sum(z.>threshold)/Ntrial
print("Pfa = $(Pfa)")
Pfa = 0.00096

非相干接收器的ROC曲线绘制为

In [ ]:
rocsnr(snrdb,SignalType="NonfluctuatingNoncoherent",MinPfa=1e-4)
Out[0]:

我们看到非相干接收机的探测器性能不如相干接收机。

结论

此示例演示如何使用Engee建模和执行各种检测方法。 该示例说明了信号检测中几个常见变量之间的关系,即检测概率(Pd),虚警概率(Pfa)和信噪比(SNR)。 特别是,在示例中,使用蒙特卡罗仿真计算检测器性能,并使用接收器操作特性曲线(ROC)检查度量结果。

检测信号时会遇到两个SNR值。 第一个是单个数据样本的SNR。 这是显示在ROC曲线的曲线图上的SNR值。 ROC上的一个点给出了实现相应Pd和Pfa所需的单个样本的所需SNR。 然而,这不是用于检测的SNR阈值。 根据Neiman-Pearson判决规则,SNR阈值-我们在检测期间看到的第二个SNR值-由噪声分布和期望的Pfa电平确定。 因此,这样的SNR阈值确实对应于ROC曲线上的Pfa轴。 如果我们固定一个样本的SNR,如ROC曲线的上述图表所示,则曲线上的每个点将对应于Pfa值,而Pfa值又被转换为阈值SNR值。 使用该SNR阈值进行检测将导致相应的Pd值。

注意,SNR阈值可能与实际检测器中直接使用的阈值不匹配。 在真实的检测器中,通常使用容易计算的足够的统计值进行检测。 因此,真阈值必须以这样的方式从上述SNR阈值导出,即其对应于足够统计量的选择。