diff options
| author | wukong <wukong@longaeva> | 2026-04-10 23:46:12 -0700 |
|---|---|---|
| committer | wukong <wukong@longaeva> | 2026-04-10 23:46:12 -0700 |
| commit | 4c4eb1bd8f003b3b57707badd2dd089ed193a896 (patch) | |
| tree | 15b62907fffd70c46a9b4369df93ab33c6aa88ac /kalman.awk | |
| parent | e7d1781578e846a7b1d634cd43c8fab00a67b883 (diff) | |
renamed fir window generators;
minor edits to whitespace and comments for more consistent style;
Diffstat (limited to '')
| -rw-r--r-- | kalman.awk | 30 |
1 files changed, 16 insertions, 14 deletions
@@ -1,7 +1,7 @@ #!/usr/bin/awk -f ### kalman.awk -# simple linear regression between columns + BEGIN { sign = "[+-]?" @@ -11,6 +11,8 @@ BEGIN { number = "^" sign "(" decimal "|" fraction ")" exponent "$" } + +# column headers NR == 1 { header_nf = NF for (n=1; n<=NF; n++) { @@ -18,31 +20,30 @@ NR == 1 { } } -NF != 0 { - #printf("\n%s: %s", NR, $0) - if (NF > max_nf) - max_nf = NF - ### iterate over columns - for (y=1; y<=max_nf; y++) { +NF > 0 { + (NF > nf_max) ? nf_max = NF : nf_max = nf_max + + # columns + for (y=1; y<=nf_max; y++) { if ($y ~ number) { - ### mean + # mean count[y] += 1 sum[y] += $y sum2[y] += $y*$y mean[y] = sum[y]/count[y] - ### difference from the mean + # difference from the mean delta[y] = $y - mean[y] sum_delta[y] += delta[y] sum_delta2[y] += delta[y]*delta[y] - ### sample variance + # sample variance (count[y] - 1) ? var[y] = sum_delta2[y]/(count[y] - 1) : var[y] = 0 # x = row, y = col - for (x=1; x<=max_nf; x++) { + for (x=1; x<=nf_max; x++) { count[x,y] += 1 sum_xy[x,y] += $x*$y sum_delta_xy[x,y] += delta[x]*delta[y] @@ -72,7 +73,7 @@ NF != 0 { b[x,y] = 1 } - ### error estimate + # error estimate err_den[x,y] = count[x,y]*(count[x,y] - 2) if (count[x,y] > 2) { err[x,y] = $y - (a[x,y] + b[x,y]*$x) @@ -93,9 +94,10 @@ NF != 0 { } } + END { - for (y=1; y<=max_nf; y++) { - for (x=1; x<=max_nf; x++) { + for (y=1; y<=nf_max; y++) { + for (x=1; x<=nf_max; x++) { if (x != y && r[x,y]) { printf(OFMT OFS OFMT OFS "(%s)" OFS " = (" OFMT " +/- " OFMT ")(%s)" OFS " + (" OFMT " +/- " OFMT ")"ORS, meas_cov[x,y], est_err_cov[x,y], header[y], b[x,y], b_err[x,y], header[x], |
