Source code for bruges.noise.noise
# -*- coding: utf-8 -*-
"""
Noise.
:copyright: 2015 Agile Geoscience
:license: Apache 2.0
"""
import numpy as np
from bruges.util import rms
[docs]def noise_db(a, snr):
"""
Takes an array of seismic amplitudes and SNR in dB.
Args:
a (ndarray): seismic amplitude array.
snr (int): signal to noise ratio.
Returns: Noise array, the same shape as the input.
Note: it does *not* return the input array with the noise added.
"""
# Get the amplitude of the signal
sigmean = rms(a)
# Calculate the amp of the noise,
# given the desired SNR
noisemean = sigmean / 10.0**(snr/20.0)
# Normal noise, centered on 0,
# SD=sqrt(var), same shape as input
noise = noisemean * np.random.normal(0.0, 1.0, a.shape)
return noise