allan偏差及相关时频统计
AllanTools的Python项目详细描述
计算allan偏差的python库及其相关 时间和频率统计。LGPL v3+ license。
- 在https://github.com/aewallin/allantools 开发
- 安装包位于https://pypi.python.org/pypi/AllanTools
- 在https://groups.google.com/d/forum/allantools 的讨论组
- 文档可在https://allantools.readthedocs.org
输入数据应为任意分数频率的等间距观测值, 或以秒为单位的阶段。以秒为单位计算给定τ值的偏差。
Function | Description |
---|---|
^{tt1}$ | Allan deviation |
^{tt2}$ | Overlapping Allan deviation |
^{tt3}$ | Modified Allan deviation |
^{tt4}$ | Time deviation |
^{tt5}$ | Hadamard deviation |
^{tt6}$ | Overlapping Hadamard deviation |
^{tt7}$ | Total deviation |
^{tt8}$ | Modified total deviation |
^{tt9}$ | Time total deviation |
^{tt10}$ | Hadamard total deviation |
^{tt11}$ | Theo1 deviation |
^{tt12}$ | Maximum Time Interval Error |
^{tt13}$ | Time Interval Error RMS |
^{tt14}$ | Gap resistant overlapping Allan deviation |
还包括用于创建合成数据集的噪声发生器:
- f^2 psd的紫罗兰色噪声
- f^0 psd的白噪声
- 带有f^-1 psd的粉红色噪声
- f^-2psd的布朗噪声或随机游动噪声
有关可用统计信息和噪声生成器的详细信息:full list of available functions
请参阅/测试将尿囊素输出与其他尿囊素输出进行比较的测试 (如Stable32)程序。更多的测试数据,基准,ipython笔记本, 欢迎与已知的好算法进行比较!
安装
从pypi安装:
pip install allantools
最新版本+示例、测试、测试数据、ipython笔记本:从github克隆,然后安装
python setup.py install
(有关安装选项,请参见python setup.py–help install)
这些命令应该以根用户身份运行,以便进行系统范围的安装,或者 您可以使用–user选项仅为您的帐户安装。 确切的命令名可能因os/package manager/target python版本而异。
基本用法
最小示例,相位数据
我们只能用一个参数调用尿囊素-一个相位数据数组。 这适用于1赫兹的时间间隔测量,例如 测量两个时钟1pps输出的时间间隔计数器。
>>> import allantools >>> x = allantools.noise.white(10000) # Generate some phase data, in seconds. >>> (taus, adevs, errors, ns) = allantools.oadev(x)
当只给出一个输入参数时,假定相位数据以秒为单位 如果未指定速率参数,则默认速率为1.0 如果未指定taus参数,则默认为taus=“octave”
频率数据示例
注意尿囊素假定无量纲频率数据输入。 标准化,例如用平均值分割所有数据点 频率,留给用户。
>>> import allantools >>> import pylab as plt >>> import numpy as np >>> t = np.logspace(0, 3, 50) # tau values from 1 to 1000 >>> y = allantools.noise.white(10000) # Generate some frequency data >>> r = 12.3 # sample rate in Hz of the input data >>> (t2, ad, ade, adn) = allantools.oadev(y, rate=r, data_type="freq", taus=t) # Compute the overlapping ADEV >>> fig = plt.loglog(t2, ad) # Plot the results >>> # plt.show()
new in 2016.11:简单的顶级API,使用专用类进行数据处理和绘图。
import allantools # https://github.com/aewallin/allantools/ import numpy as np # Compute a deviation using the Dataset class a = allantools.Dataset(data=np.random.rand(1000)) a.compute("mdev") # New in 2019.7 : write results to file a.write_result("output.dat") # Plot it using the Plot class b = allantools.Plot() # New in 2019.7 : additional keyword arguments are passed to # matplotlib.pyplot.plot() b.plot(a, errorbars=True, grid=True) # You can override defaults before "show" if needed b.ax.set_xlabel("Tau (s)") b.show()
带示例的Jupyter笔记本
Jupyter笔记本是一种交互式的Python脚本,嵌入在浏览器中, 允许您轻松地操作数据和显示绘图。作为指导 安装jupyter时,请参考https://jupyter.org/install。
有关笔记本格式的一些示例,请参见/examples。
Github将笔记本格式化为漂亮的网页,例如