美文网首页
给时序信号添加高斯白噪声python

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

作者: 一位学有余力的同学 | 来源:发表于2019-12-02 11:23 被阅读0次

1.信噪比

信噪比的计算公式为:
SNR=10\log_{10}\frac{Ps}{Pn}
其中,Ps和Pn分别表示信号和噪声的有效功率,信噪比SNR的单位为dB。

或者信噪比的计算公式也可以表示为:
SNR=10\log_{10}\frac{\sum_{n=0}^{N-1}x^2(n)}{\sum_{n=0}^{N-1} n^2(n)}
其中,x(n)表示干净信号,n(n)表示噪声信号。
上面提到的信号功率其实就是信号的能量或强度,在连续的情况下就是对信号x平方后求积分,而在离散情况下就是使用对信号x平方后求和。

2.加入高斯白噪声

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

根据公式可以得到给原始信号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(npower)
    signal_add_noise = x + noise
    return signal_add_noise

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

相关文章

网友评论

      本文标题:给时序信号添加高斯白噪声python

      本文链接:https://www.haomeiwen.com/subject/dmsxgctx.html