allan - variance and deviation tools for stability analysis
A Rust implementation of Allan variance and deviation calculations for analyzing the stability and noise characteristics of time-series data. This is particularly useful for characterizing frequency standards, oscillators, gyroscopes, and other precision measurement instruments.
Overview
Allan variance is a method of representing frequency stability in oscillators and other time-series data. Unlike standard deviation, Allan variance converges for most types of noise commonly found in physical systems and can distinguish between different noise types.
This library provides:
- Overlapping Allan variance (AVAR) and Allan deviation (ADEV) calculations
- Modified Allan variance (MVAR) and Modified Allan deviation (MDEV) calculations
- Overlapping Hadamard variance (HVAR) and Hadamard deviation (HDEV) calculations
- Configurable tau (averaging time) ranges with multiple spacing options
- Streaming calculation with efficient circular buffer implementation
- Support for real-time analysis of continuous data streams
- SIMD optimizations (enabled by default) for 3x faster Modified Allan calculations
Example
use ;
// Allan variance/deviation
let mut allan = new;
for sample in measurements.iter
let tau_1 = allan.get.unwrap;
println!;
println!;
// Modified Allan variance/deviation (better white PM noise rejection)
let mut modified = new;
for sample in measurements.iter
let tau_1 = modified.get.unwrap;
println!;
println!;
// Hadamard variance/deviation (3rd difference, better drift rejection)
let mut hadamard = new;
for sample in measurements.iter
let tau_1 = hadamard.get.unwrap;
println!;
println!;
Documentation
API documentation is available at docs.rs/allan.
License
Licensed under either of
- Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.