Python:给信号添加白噪声

简介: 假设想要给信号添加 snr=50 分贝的白噪声,思路就是,生成标准正态分布随机信号。

1. 白噪声

信噪比:

$$ SNR=10 \log _{10} \frac{P s}{P n} $$

$P_s$ 和 $P_n$ 分别表示信号和噪声的有效功率,信噪比 SNR 的单位为 dB. 如果 $x(t)$ 和 $n(t)$ 分别为信号和噪声,则

$$ SNR=10 \log _{10} \frac{\sum_{t=0}^{N-1} x^{2}(t)}{\sum_{t=0}^{N-1} n^{2}(t)} $$

2. 给信号添加白噪声

假设想要给信号添加 $snr=50$ 分贝的白噪声,则噪声功率为 $P_n=\frac{P_s}{10^{\frac{SNR}{10}}}$,思路就是,生成标准正态分布随机信号,然后将其增加 $\sqrt{P_n}$ 倍。

import numpy as np
import matplotlib.pyplot as plt

def wgn(x, snr):
    batch_size, len_x = x.shape
    Ps = np.sum(np.power(x, 2)) / len_x
    Pn = Ps / (np.power(10, snr / 10))
    noise = np.random.randn(len_x) * np.sqrt(Pn)
    return x + noise

T = 100
x = np.zeros((1, T)) + 35.
snr = 50
x_noise = wgn(x, snr)

plt.plot(x_noise[0])
plt.plot(x[0])
plt.ylim([30, 40])
plt.show()

在这里插入图片描述


参考:

  1. 给时序信号添加高斯白噪声python.
目录
相关文章
|
搜索推荐 Unix Linux
Python信号之分享
Python信号之分享
|
开发者 Python
Python Qt GUI设计:信号与槽的使用方法(基础篇—7)
Python Qt GUI设计:信号与槽的使用方法(基础篇—7)
Python Qt GUI设计:信号与槽的使用方法(基础篇—7)
|
4月前
|
机器学习/深度学习 数据采集 数据可视化
使用Python实现深度学习模型:智能交通信号优化
使用Python实现深度学习模型:智能交通信号优化
253 9
|
4月前
|
数据可视化 算法 Python
【数字通信革命】深入剖析Python实现BPSK、QPSK到QAM信号调制的奥秘,解锁高速数据传输的密钥!
【8月更文挑战第2天】在通信系统中,信号调制至关重要,它将信息嵌入载波信号中以便传输。本文通过Python实现三种基本调制技术:BPSK、QPSK和16-QAM,并提供示例代码。首先需安装NumPy、SciPy和Matplotlib库。BPSK是最简单的相位调制,每个符号携带一位信息;QPSK则每个符号携带两位信息,通过四种相位表示;16-QAM结合幅度和相位调制,每个符号携带更多比特信息。本文提供的代码演示了这些调制方式的实现过程,并利用Matplotlib可视化结果。了解这些调制技术有助于深入探索信号处理领域。
167 18
|
4月前
|
Python
【信号处理】python按原理实现BPSK、QPSK、QAM信号调制
本文提供了两种不同的方法来实现16-QAM(正交幅度调制)的调制和解调过程,一种是使用commpy库,另一种是通过手动定义映射字典来实现。
321 8
|
4月前
|
消息中间件 网络协议 Python
信号传递新风尚!Python IPC,让你的程序间沟通无界限
【8月更文挑战第3天】在多程序系统中,进程间通信(IPC)是实现数据共享与协作的关键。Python提供多种IPC机制,如管道、消息队列和套接字,使信息交流高效灵活。通过`multiprocessing.Pipe()`,进程间可直接传递消息;利用消息队列实现异步通信,提高解耦与扩展性;借助socket库,支持网络内外进程通信。合理运用这些技术,能够显著增强程序间的协同能力,构建更灵活、可扩展的系统。
134 1
|
4月前
|
安全 Linux Python
Python强大的信号库-blinker 入门教程
Python强大的信号库-blinker 入门教程
|
5月前
|
Python
Python的`signal`模块提供了访问底层操作系统提供的信号机制的方式。信号是操作系统用来通知进程发生了某种情况(如用户按下Ctrl+C)的一种机制。
Python的`signal`模块提供了访问底层操作系统提供的信号机制的方式。信号是操作系统用来通知进程发生了某种情况(如用户按下Ctrl+C)的一种机制。
|
7月前
|
Python
PyQt---------信号与槽函数的关系
PyQt---------信号与槽函数的关系
204 1