diff options
Diffstat (limited to '')
| -rw-r--r-- | ckcptime.awk | 49 |
1 files changed, 16 insertions, 33 deletions
diff --git a/ckcptime.awk b/ckcptime.awk index 4bc9539..df5e188 100644 --- a/ckcptime.awk +++ b/ckcptime.awk @@ -1,14 +1,10 @@ #!/usr/bin/env awk -f -function log10(n) { +function log10(n) { return log(n)/log(10.0) } - return log(n)/log(10.0) -} - - -function merge_meas(val_est, unc_est, val_meas, unc_meas) { +function merge_meas(est_val, est_unc, meas_val, meas_unc) { # add (meas - est) delta to the measurement uncertainty # note: this works when tracking a constant value, @@ -16,17 +12,18 @@ function merge_meas(val_est, unc_est, val_meas, unc_meas) { # unc_meas = sqrt(unc_meas^2.0 + (val_meas - val_est)^2.0) # Kalman filtering compares variances - unc_est = (0.5*unc_est)^2.0 - unc_meas = (0.5*unc_meas)^2.0 + # convert uncertainties to square units + est_unc = (0.5*est_unc)^2.0 + meas_unc = (0.5*meas_unc)^2.0 - G_K = (unc_est)/((unc_est) + (unc_meas)) - val_est = val_est + G_K*(val_meas - val_est) - unc_est = (unc_est*unc_meas)/(unc_est + unc_meas) + K = (est_unc)/((est_unc) + (meas_unc)) + est_val = est_val + K*(meas_val - est_val) + est_unc = (est_unc*meas_unc)/(est_unc + meas_unc) - # convert unc_est back to same units as val_est - unc_est = 2.0*sqrt(unc_est) + # convert est_unc back to original units + est_unc = 2.0*sqrt(est_unc) - return sprintf(OFMT OFS OFMT ORS, val_est, unc_est) + return sprintf(OFMT OFS OFMT ORS, est_val, est_unc) } @@ -36,7 +33,8 @@ function sigfig(val, unc) { ordmag_val = log10(val) ordmag_unc = log10(unc) - sigfig_unc = sprintf("%.f", 6) + #sigfig_unc = sprintf("%.f", 6) + sigfig_unc = sprintf("%.f", sqrt((ordmag_val - ordmag_unc)^2.0) + 1.0) sigfig_val = sprintf("%.f", (ordmag_val - ordmag_unc + sigfig_unc)) ofmt_val = "%." sigfig_val "g" @@ -47,24 +45,6 @@ function sigfig(val, unc) { } -function ck_boottime() { - - "sysctl kern.boottime" | getline t_kboot - close("sysctl kern.boottime") - sub("^.*\{", "", t_kboot) - sub("\}.*$", "", t_kboot) - split(t_kboot, t_kboot_arr, ",") - - for (i in t_kboot_arr) { - sub("^.*= ", "", t_kboot_arr[i]) - } - - t_kboot = sprintf(t_kboot_arr[1] "." t_kboot_arr[2]) - return t_kboot - -} - - function ck_cptime() { t_sys_meas[1] = systime() @@ -155,6 +135,9 @@ function ck_uptime(t0_est, t0_unc) { BEGIN { OFMT="%.21g" + pi = 4.0*atan2(1.0, 1.0) + c0 = 299792458 # m/sec + #print("_systime_", systime()) #print("_boottime_", ck_boottime()) printf("%s" ORS, ck_cptime()) |
