高斯白噪声
概念
加性高斯白噪声(Additive White Gaussian Noise,简写AWGN)
"白"是指功率谱恒定;
高斯指的是概率p (x)满足高斯函数。
在百度百科中的概念是,加性高斯白噪声在通信领域中指的是一种各频谱分量服从均匀分布(即白噪声),且幅度服从高斯分布的噪声信号。
公式推导
matlab的库中有AWGN这个库,如果要使用Python进行实现,要按照信噪比SRN公式进行推导:
其中x为原始信号,n为噪声信号。
推导可得噪声信号公式,其中N为原始信号长度:
最后服从高斯分布对噪声信号进行放大,可以得到最终的噪声信号:
代码实现
假设我的原始信号single,与时间t的关系为:
其中t的取值为{0,1,2,3…,3998,3999},因此一共有4000个信号。得到的信号时域波形图:
假设当前信噪比为10db,那么得到信号加入AWGN的时域波形图为:
import numpy as np
def awgn(x, snr, seed=7):
'''
加入高斯白噪声 Additive White Gaussian Noise
:param x: 原始信号
:param snr: 信噪比
:return: 加入噪声后的信号
'''
np.random.seed(seed) # 设置随机种子
t_snr = 10 ** (snr / 10.0)
xpower = np.sum(x ** 2) / len(x)
npower = xpower / t_snr
noise = np.random.randn(len(x)) * np.sqrt(npower)
return x + noise