本文记录了加性高斯白噪声的原理,并给出了使用Python实现的源码。
加性高斯白噪声
概念
加性高斯白噪声(英语:Additive white Gaussian noise,AWGN)在通信领域中指的是一种功率谱函数是常数(即白噪声),且幅度服从高斯分布的噪声信号。因其可加性、幅度服从高斯分布且为白噪声的一种而得名。
公式推导
Matlab
的库中有AWGN这个库,但如果要使用Python
进行实现,要按照信噪比SRN公式进行推导。
$$
\begin{align*}
SNR &= 10 \log_{10}\frac{P_{\text{signal}}}{P_{\text{noise}}} \\
&= 10 \log_{10}\frac{\sum x^{2}}{\sum n^{2}}
\end{align*}
$$
其中,$x$为原始信号,$n$为噪声信号。设$N$为原始信号长度,则有
$$
\begin{equation*}
\vert n \vert = \frac{\sum x^{2}}{N \cdot 10^{\frac{SNR}{10}}}
\end{equation*}
$$
最后利用标准高斯分布对噪声信号进行放大,可以得到最终的噪声信号:
$$
\begin{equation*}
\text{noise} = \text{random}(N) \cdot \sqrt{\vert n \vert}
\end{equation*}
$$
代码实现
1 | def AWGN(x, snr): |