在Python中定义白噪声过程

dbl*_*iss 13 python numpy probability noise scipy

我需要从白噪声过程中提取样本,以便在数字上实现特定的积分.

我如何用Python生成这个(即numpy,scipy等)?

Sam*_*Sam 19

您可以通过numpy.random.normal函数实现此目的,该函数从高斯分布中抽取给定数量的样本.

import numpy
import matplotlib.pyplot as plt

mean = 0
std = 1 
num_samples = 1000
samples = numpy.random.normal(mean, std, size=num_samples)

plt.plot(samples)
plt.show()
Run Code Online (Sandbox Code Playgroud)

从均值= 0,std = 1的高斯分布中抽取1000个随机样本

  • 当n = 0时,也可以使用`numpy.random.standard_normal(size = num_samples)`,std = 1 (2认同)
  • 只要信号中不存在自相关,您就可以使用任何类型的分布来实现这一点。“numpy.random.uniform(low=0.0, high=1.0, size=1000)”、“np.random.triangle(-3, 0, 8, 100000)”也会得到白噪声。您还可以进行相关信号处理,并使用“numpy.random.shuffle”对其进行随机化以获得白噪声。 (2认同)
  • 这不是白噪音 (2认同)

小智 7

简短的回答是numpy.random.random()。Numpy 站点描述

但由于我发现越来越多的类似问题的答案写为numpy.random.normal,我怀疑需要一些描述。如果我正确理解维基百科(以及大学的一些课程),高斯和白噪声是两个不同的东西。白噪声具有均匀分布,而不是正态分布(高斯分布)。

import numpy.random as nprnd
import matplotlib.pyplot as plt

num_samples = 10000
num_bins = 200

samples = numpy.random.random(size=num_samples)

plt.hist(samples, num_bins)
plt.show()
Run Code Online (Sandbox Code Playgroud)

图片:结果

这是我的第一个答案,所以如果您纠正我在这里可能犯的错误,我很乐意更新。谢谢=)

  • “白噪声具有均匀分布,而不是正态分布(高斯分布)。”白噪声必须在*频率*上具有均匀分布,但它可以在*时间*上具有任何分布(例如正态分布)。 (8认同)
  • 这个答案是不正确的。白噪声是来自“任何”不相关随机过程的连续过程,例如均匀或正态过程。但是,如果将其数字化,则必须在奈奎斯特频率上应用带通滤波器,否则连续过程的近似值会包含混叠。事实证明,带通白噪声会导致离散随机过程,其中每个样本都是从高斯/正态分布中选取的。这就是你混乱的结果。高斯噪声和白噪声在离散过程中是相同的。高斯是连续白噪声过程的*子集*。 (6认同)
  • 正如维基百科所说:“白噪声是在不同频率下具有相同强度的随机信号”。这意味着只要不存在临时相关性,您就可以拥有任何类型的信号 PDF。所以白噪声可以有均匀分布、正态分布或其他类型的分布 (2认同)