高斯噪声中正弦信号检测:二元假设下的分析与仿真
噪声是服从的WGN,已知。 1、若频率已知,幅度和相位未知(假定A>0),若=1,=0.1,N=20,虚警概率设定为0.01,分析检测门限及检测概率并仿真;
首先,设正弦信号为:
$$s(t) = A\sin(2\pi f t + \phi),$$
其中,$A$为幅度,$f$为频率,$\phi$为相位。
考虑二元假设:
$$H_0: s(t) = 0$$
$$H_1: s(t) = A\sin(2\pi f t + \phi) + n(t)$$
其中,$n(t)$为高斯噪声。
根据最小误差概率准则,检测门限为:
$$\gamma = \frac{\sigma^2}{A^2} \ln \left(\frac{P_{FA}}{1-P_{FA}}\right)$$
其中,$\sigma^2$为噪声方差,$P_{FA}$为虚警概率。
检测概率为:
$$P_D = Q\left(\frac{\gamma - A\sin\phi}{\sigma}\right)$$
其中,$Q(x)$为标准正态分布的累积分布函数。
根据上述公式,我们可以求得检测门限和检测概率。
下面进行仿真。我们取 $A=1$,$f=1$,$\phi=0.1$,$N=20$,$\sigma^2=1$,$P_{FA}=0.01$。
首先生成正弦信号和高斯噪声:
import numpy as np
import matplotlib.pyplot as plt
# 生成正弦信号和高斯噪声
A = 1
f = 1
phi = 0.1
N = 20
sigma = 1
P_FA = 0.01
t = np.linspace(0, N-1, N)
s = A * np.sin(2*np.pi*f*t + phi)
n = np.random.normal(0, sigma, N)
x = s + n
然后计算检测门限和检测概率:
# 计算检测门限和检测概率
gamma = sigma**2 / A**2 * np.log(P_FA/(1-P_FA))
P_D = 1 - special.ndtr((gamma - A*np.sin(phi))/sigma)
最后绘制信号和门限:
# 绘制信号和门限
plt.plot(t, x, label='Signal')
plt.axhline(y=gamma, color='r', linestyle='--', label='Threshold')
plt.legend()
plt.show()
结果如下图所示:

可以看到,信号的峰值已经超过了检测门限,因此可以判断出该信号存在。
原文地址: https://www.cveoy.top/t/topic/oebo 著作权归作者所有。请勿转载和采集!