彩色噪音.py
生成高斯分布噪音,功率谱为任意指数幂律。
指数为2对应布朗噪音。较小的指数会产生长程相关性,即指数为1的粉红噪音(也称1/f噪音或闪烁噪音)。
基于以下算法:
Timmer, J. and Koenig, M.:
关于生成幂律噪音。
Astron. Astrophys. 300, 707-710 (1995)
进一步阅读:
维基百科上的噪音颜色 <//en.wikipedia.org/wiki/Colors_of_noise>
_
安装
pip安装 colorednoise
依赖
- Python >= 3.6.15
- NumPy >= 1.17.0
尚未测试其他Python 3版本,但应该也能正常工作。 Python 2请使用colorednoise 1.x版本。
示例
.. code:: python
import colorednoise as cn
beta = 1 # 指数
samples = 2**18 # 生成的样本数
y = cn.powerlaw_psd_gaussian(beta, samples)
# 可选: 使用Matplotlib绘制功率谱密度
#from matplotlib import mlab
#from matplotlib import pylab as plt
#s, f = mlab.psd(y, NFFT=2**13)
#plt.loglog(f,s)
#plt.grid(True)
#plt.show()
.. code:: python
# 生成多个相互独立同分布的时间序列
# 重复每个变量的模拟多次
import colorednoise as cn
n_repeats = 10 # 重复模拟次数
n_variables = 5 # 每次模拟中的独立变量
timesteps = 1000 # 每个变量的时间步长
y = cn.powerlaw_psd_gaussian(1, (n_repeats, n_variables, timesteps))
# 每个变量的期望方差为1, 但每次实现都不同
print(y.std(axis=-1))
.. code:: python
# 生成断裂幂律谱: 低于某频率为白噪音
import colorednoise as cn
y = cn.powerlaw_psd_gaussian(1, 10**5, fmin=.05)
s, f = mlab.psd(y, NFFT=2**9)
#plt.loglog(f,s)
#plt.grid(True)
#plt.show()