高斯白噪声
概念
加性高斯白噪声(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 npdef awgn(x, snr, seed=7):'''加入高斯白噪声 Additive White Gaussian Noise:param x: 原始信号:param snr: 信噪比:return: 加入噪声后的信号'''np.random.seed(seed) # 设置随机种子snr = 10 ** (snr / 10.0)xpower = np.sum(x ** 2) / len(x)npower = xpower / snrnoise = np.random.randn(len(x)) * np.sqrt(npower)return x + noise