Allan-family clock-stability estimators.
The functions in this module delegate to sidereon-core's IEEE-1139 Allan,
modified Allan, Hadamard, and time-deviation estimators. Phase deviations are
in seconds, fractional-frequency samples are dimensionless, and averaging
times are seconds.
Summary
Functions
Plain non-overlapping Allan deviation for explicit averaging factors.
Compute a configured set of Allan-family curves.
Overlapping Hadamard deviation for explicit averaging factors.
Modified Allan deviation for explicit averaging factors.
Fully overlapping Allan deviation for explicit averaging factors.
Extract RINEX receiver-clock phase deviations in seconds.
Time deviation for explicit averaging factors.
Types
@type allan_error() :: :empty_series | :invalid_tau0 | :no_estimators | :empty_tau_grid | :invalid_averaging_factor | :too_few_samples | :non_finite_sample | :gap | :non_finite_tau | :non_finite_deviation | term()
@type estimator() :: :adev | :overlapping_adev | :mdev | :hdev | :tdev
@type gap_policy() :: :reject | :omit_terms
@type tau_grid() :: :octave | :all | {:explicit, [pos_integer()]}
Functions
@spec allan_deviation(series(), number(), [pos_integer()]) :: {:ok, Sidereon.ClockStability.Curve.t()} | {:error, allan_error()}
Plain non-overlapping Allan deviation for explicit averaging factors.
tau0_s is the base sample interval in seconds. averaging_factors are the
integer m values, so each output tau_s is m * tau0_s.
@spec compute_allan_deviations(series(), number(), keyword()) :: {:ok, Sidereon.ClockStability.Curves.t()} | {:error, allan_error()}
Compute a configured set of Allan-family curves.
Options:
:estimators-:standardfor OADEV, MDEV, HDEV, and TDEV,:all,:none, a list of estimator atoms, or a map of estimator booleans.:tau_grid-:octave,:all, or{:explicit, factors}. Averaging times are seconds.:gap_policy-:rejector:omit_termsfor gapped series.
@spec hadamard_deviation(series(), number(), [pos_integer()]) :: {:ok, Sidereon.ClockStability.Curve.t()} | {:error, allan_error()}
Overlapping Hadamard deviation for explicit averaging factors.
tau0_s and returned tau_s values are seconds.
@spec modified_adev(series(), number(), [pos_integer()]) :: {:ok, Sidereon.ClockStability.Curve.t()} | {:error, allan_error()}
Modified Allan deviation for explicit averaging factors.
tau0_s and returned tau_s values are seconds.
@spec overlapping_adev(series(), number(), [pos_integer()]) :: {:ok, Sidereon.ClockStability.Curve.t()} | {:error, allan_error()}
Fully overlapping Allan deviation for explicit averaging factors.
tau0_s and returned tau_s values are seconds.
@spec receiver_clock_phase_deviations(Sidereon.GNSS.RINEX.Observations.t()) :: [ float() | nil ]
Extract RINEX receiver-clock phase deviations in seconds.
Event epochs are returned as nil gaps. The result can be passed as
{:phase_seconds_with_gaps, values} to compute_allan_deviations/3.
@spec time_deviation(series(), number(), [pos_integer()]) :: {:ok, Sidereon.ClockStability.Curve.t()} | {:error, allan_error()}
Time deviation for explicit averaging factors.
Returned deviation values are seconds.