我需要从白噪声过程中抽取样本,以便以数字方式实现特定的积分。
如何使用Python(即numpy,scipy等)生成它?
您可以通过numpy.random.normal
function实现这一点,该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()
最简单的答案是numpy.random.random()
。 Numpy site description
但是由于我发现越来越多的类似问题的答案写为numpy.random.normal
,因此我认为需要进行一些描述。如果我确实正确理解了Wikipedia(以及大学的一些课程),那么Gauss和White Noise是两回事。白噪声具有均匀分布,而不是正态分布(高斯)。
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()
这是我的第一个答案,因此,如果您更正我在这里可能犯的错误,我将很乐意对其进行更新。谢谢=)
使用numpy.random.normal
创建具有正态分布(高斯)的随机样本:
import numpy as np
import seaborn as sns
mu, sigma = 0, 1 # mean and standard deviation
s = np.random.normal(mu, sigma, size=1000) # 1000 samples with normal distribution
# seaborn histogram with Kernel Density Estimation
sns.distplot(s, bins=40, hist_kws={'edgecolor':'black'})
你们俩都部分正确。噪声既有幅度又有频率。
高斯噪声与幅度有关,是指通常以某个均值周围分布但没有说明频率特性的任何噪声。
[白噪声是频谱平坦的任何噪声,即,所有频率的期望值相等,即足够长的噪声序列的FFT的波特图将是平坦的。
可以使用numpy.random方法生成高斯噪声,但绝对不会是白色的:FFT波特图将是采样频率上的单位脉冲函数,而不是平坦频谱。
注1:在离散时间内,噪声不能纯白色,因为最大频率是采样频率。因此,离散时间中的白噪声通常指直到采样频率为止的平坦频谱。注2:对于大多数控制应用(最快的动态<