From 5cfabe35ebfce39b52f7e7230c1779dddb643e0b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20J=C3=B6rdens?= Date: Mon, 9 Oct 2023 15:15:05 +0200 Subject: [PATCH] integrated jitter --- src/bin/main.rs | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/bin/main.rs b/src/bin/main.rs index de49a3d..a10a363 100644 --- a/src/bin/main.rs +++ b/src/bin/main.rs @@ -44,6 +44,10 @@ pub struct Opts { /// Exponential averaging, negative for constant time, positive for constant count accross stages #[arg(short, long, default_value_t = 100000)] max_avg: isize, + + /// Integrate jitter (linear) + #[arg(short, long)] + integrate: bool, } fn main() -> Result<()> { @@ -54,6 +58,7 @@ fn main() -> Result<()> { detrend, fs, max_avg, + integrate, } = Opts::parse(); let logfs = fs.log10(); @@ -95,6 +100,7 @@ fn main() -> Result<()> { .map(|dec| { let (p, b) = dec.psd(min_avg); let f = Break::frequencies(&b, min_avg); + let (mut p0, mut f0) = (0.0, 0.0); Trace { breaks: b, psd: f @@ -103,9 +109,16 @@ fn main() -> Result<()> { .rev() .skip(1) // skip DC .map(|(f, p)| { + let fsf = fs * f; + p0 += p * (fsf - f0); + f0 = fsf; [ - (f.log10() + logfs) as f64, - 10.0 * (p.log10() - logfs) as f64, + fsf.log10() as f64, + (if integrate { + p0 + } else { + 10.0 * (p.log10() - logfs) + }) as f64, ] }) .collect(),