一 awgn原理
根据信噪比计算公式:
x是信号强度,n是噪声强度。
原始信号序列x长度为N。则可根据上式计算噪声功率平均值:
SNR为可设置的信噪比值,可据此求出噪声信号强度平均值为噪声功率平均值开根号。
python中使用np.random.randn() 生成均值为0,方差为1的归一化高斯分布的随机值。用它乘以得到高斯噪声。
二 代码
#定义白噪声函数
def awgn (x,SNR):
#x输入信号,SNR 信噪比
SNR=10 ** (SNR/10.0)
#for i in range(len(x)):
# x[i]=x[i] ** 2
Xpower=np.sum(np.abs(x)** 2)/len(x)
Npower=Xpower/SNR
#分别在实部虚部产生高斯随机数,但为了功率归一化需除以np.sqrt(2)
noise=(np.random.randn(len(x))+1j*np.random.randn(len(x)))/np.sqrt(2)*np.sqrt(Npower)
return x+noise