给时序信号添加高斯白噪声python

1.信噪比

信噪比的计算公式为:

其中,Ps和Pn分别表示信号和噪声的有效功率,信噪比SNR的单位为dB。

或者信噪比的计算公式也可以表示为:

其中,x(n)表示干净信号,n(n)表示噪声信号。
上面提到的信号功率其实就是信号的能量或强度,在连续的情况下就是对信号x平方后求积分,而在离散情况下就是使用对信号x平方后求和。

2.加入高斯白噪声

我们的目标是给原始信号x(n)加入多少分贝的高斯白噪声。已知信噪比SNR,则噪声功率的计算公式为:,噪声信号的计算公式为 。推导过程不再累述。

根据公式可以得到给原始信号x添加snr分贝的噪声信号函数为:

def wgn(x, snr):
    Ps = np.sum(abs(x)**2)/len(x)
    Pn = Ps/(10**((snr/10)))
    noise = np.random.randn(len(x)) * np.sqrt(Pn)
    signal_add_noise = x + noise
    return signal_add_noise

参考文档:
Python向信号中添加不同强度dB的噪音
python信号中加入高斯信号
用python给数据加上高斯噪声

你可能感兴趣的:(给时序信号添加高斯白噪声python)