Verwenden Sie Python, um dem Signal Rauschen mit einem bestimmten Signal-Rausch-Verhältnis hinzuzufügen

Um einem Signal Rauschen mit einem bestimmten Signal-Rausch-Verhältnis hinzuzufügen, können Sie zunächst die Leistung des Signals berechnen, dann die Rauschleistung basierend auf dem Signal-Rausch-Verhältnis und der Signalleistung berechnen und schließlich zufällig Gaußsches Rauschen erzeugen das entspricht der Rauschleistung. Hier ist ein Beispielcode zur Implementierung dieses Prozesses und zur Visualisierung des Signals vor und nach dem Hinzufügen von Rauschen:

import numpy as np
import matplotlib.pyplot as plt

def add_noise(signal, snr_db):
    # 计算信号功率
    signal_power = np.mean(np.abs(signal) ** 2)
    
    # 计算噪声功率
    snr = 10 ** (snr_db / 10)  # 将信噪比(单位dB)转换为线性信噪比
    noise_power = signal_power / snr
    
    # 生成高斯噪声
    noise = np.sqrt(noise_power) * np.random.randn(*signal.shape)
    
    # 添加噪声后的信号
    noisy_signal = signal + noise 
    return noisy_signal

# 创建原始信号
t = np.linspace(0, 1, 1000)  # 时间轴
signal = np.sin(2 * np.pi * 10 * t)  # 频率为10Hz的正弦信号

# 添加噪声前的信号
plt.subplot(1, 2, 1)
plt.plot(t, signal)
plt.title('Original Signal')

# 添加噪声
snr_db = 10  # 信噪比为10dB
noisy_signal = add_noise(signal, snr_db)

# 添加噪声后的信号
plt.subplot(1, 2, 2)
plt.plot(t, noisy_signal)
plt.title('Noisy Signal (SNR = {}dB)'.format(snr_db))

plt.tight_layout()
plt.show()

Führen Sie den obigen Code aus und Sie sehen ein Diagramm, das das Originalsignal und das Signal nach dem Hinzufügen von Rauschen mit einem Signal-Rausch-Verhältnis von 10 dB zeigt. Sie können den SNR-Wert nach Bedarf ändern, um den Effekt bei unterschiedlichem SNR zu beobachten.

おすすめ

転載: blog.csdn.net/weixin_44463965/article/details/131735254