我正在尝试添加一个正态分布到我模拟的信号(sig_noiseFree)的高斯噪声,以获得噪声信号(sig_noisy)。租见代码。
我根据自己的理解编写了自己的函数。可以请任何人确认我这样做是对的吗?尤其是噪声添加和 SNR 计算?
我有第二个问题:我知道变量“ k ”控制噪声水平,我如何设置 SNR 并生成合适的 k,以便获得所需 SNR 的噪声信号?先感谢您。
def SNR(sig, noise,dt):
Signal = np.sum(np.abs(np.fft.fft(sig)*dt)**2)/len(np.fft.fft(sig))
Noise = np.sum(np.abs(np.fft.fft(noise)*dt)**2)/len(np.fft.fft(noise))
return (10 * np.log10(Signal/Noise))
def Gauss_noise(k,sig):
return np.random.normal(scale=k*np.max(sig), size=len(sig))
def noisy_sig(sig,k, dt):
return np.fft.ifft(np.fft.fft(sig)*dt+np.fft.fft(np.random.normal(scale= k*np.max(sig), size=len(sig)))*dt)/dt
def main(argv):
k = 2e-2
noise_g = Gauss_noise(k,sig_noiseFree)
sig_noisy = noisy_sig(sig_noiseFree,k, dt)
if __name__ == "__main__":
main(sys.argv)