在Python中定义白噪声过程

问题描述 投票:13回答:4

我需要从白噪声过程中抽取样本,以便以数字方式实现特定的积分。

如何使用Python(即numpy,scipy等)生成它?

python numpy scipy probability noise
4个回答
19
投票

您可以通过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()

1000 random samples drawn from a Gaussian distribution of mean=0, std=1


3
投票

最简单的答案是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()

Image: Result

这是我的第一个答案,因此,如果您更正我在这里可能犯的错误,我将很乐意对其进行更新。谢谢=)


1
投票

使用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'})

enter image description here


0
投票

你们俩都部分正确。噪声既有幅度又有频率。

高斯噪声与幅度有关,是指通常以某个均值周围分布但没有说明频率特性的任何噪声。

[白噪声是频谱平坦的任何噪声,即,所有频率的期望值相等,即足够长的噪声序列的FFT的波特图将是平坦的。

可以使用numpy.random方法生成高斯噪声,但绝对不会是白色的:FFT波特图将是采样频率上的单位脉冲函数,而不是平坦频谱。

注1:在离散时间内,噪声不能纯白色,因为最大频率是采样频率。因此,离散时间中的白噪声通常指直到采样频率为止的平坦频谱。注2:对于大多数控制应用(最快的动态<

© www.soinside.com 2019 - 2024. All rights reserved.