summaryrefslogtreecommitdiff
path: root/kalman_init.awk
diff options
context:
space:
mode:
authorwukong <wukong@longaeva>2026-04-10 23:46:12 -0700
committerwukong <wukong@longaeva>2026-04-10 23:46:12 -0700
commit4c4eb1bd8f003b3b57707badd2dd089ed193a896 (patch)
tree15b62907fffd70c46a9b4369df93ab33c6aa88ac /kalman_init.awk
parente7d1781578e846a7b1d634cd43c8fab00a67b883 (diff)
renamed fir window generators;
minor edits to whitespace and comments for more consistent style;
Diffstat (limited to '')
-rw-r--r--kalman_init.awk26
1 files changed, 15 insertions, 11 deletions
diff --git a/kalman_init.awk b/kalman_init.awk
index 57f7bbd..757d80b 100644
--- a/kalman_init.awk
+++ b/kalman_init.awk
@@ -1,7 +1,8 @@
#!/usr/bin/awk -f
-### kalman.awk
-# kalman csv experiemnt
+### kalman_init.awk
+# kalman filter csv experiemnt
+
BEGIN {
sign = "[+-]?"
@@ -11,6 +12,8 @@ BEGIN {
number = "^" sign "(" decimal "|" fraction ")" exponent "$"
}
+
+# column headers
NR == 1 {
header_nf = NF
for (n=1; n<=NF; n++) {
@@ -18,12 +21,12 @@ NR == 1 {
}
}
-NF != 0 {
+
+NF > 0 {
print ORS NR ":" OFS $0 ORS
- if (NF > max_nf)
- max_nf = NF
+ (NF > nf_max) ? nf_max = NF : nf_max = nf_max
- ### iterate over columns
+ # columns
for (n=1; n<=max_nf; n++) {
if ($n ~ number) {
count[n] = ($n ~ number) + (last[n] ~ number) + (last2[n] ~ number)
@@ -42,7 +45,7 @@ NF != 0 {
meas_err[n] = sqrt(var[n]/count[n])
}
- ### error covariance
+ # error covariance
for (m=1; m<=max_nf; m++) {
count[m,n]++
sum_xy[m,n] += 1
@@ -52,7 +55,7 @@ NF != 0 {
print meas_cov[m,n], est_err_last_cov[m,n]
}
- ### kalman gain
+ # kalman gain
if (count[n] <= 1) {
Gk[n] = 1
est_err[n] = sqrt(diff[n]*diff[n]) + 2.0*sqrt(diff2[n]*diff2[n])
@@ -61,17 +64,17 @@ NF != 0 {
else
Gk[n] = est_err_last[n]/(est_err_last[n] + meas_err[n])
- ### update estimate and estimated error
+ # update estimate and estimated error
est[n] = est_last[n] + Gk[n]*($n - est_last[n])
est_err[n] = (1.0 - Gk[n])*est_err_last[n]
- ### visual check
+ # visual check
printf "meas: " OFS OFMT OFS OFMT OFS OFMT, $n, meas_err[n], count[n]
printf "d1: " OFS OFMT, diff[n]
printf "d2: " OFS OFMT, diff2[n]
printf "est: " OFS OFMT OFS OFMT OFS OFMT, est[n], est_err[n], Gk[n]
- ### update previously remembered values
+ # update previously remembered values
last2[n] = last[n]
last[n] = $n
diff_last2[n] = diff_last[n]
@@ -86,3 +89,4 @@ NF != 0 {
}
}
}
+