(Arne Babenhauserheide)
2014-12-02: use an observation operator consisting of several added gauss use an observation operator consisting of several added gauss functions taken from x².
diff --git a/examples/ensemble-estimation.w b/examples/ensemble-estimation.w
--- a/examples/ensemble-estimation.w
+++ b/examples/ensemble-estimation.w
@@ -72,13 +72,6 @@ define* : write-multiple . x
map : lambda (x) (write x) (newline)
. x
-define : H x pos
- . "Observation operator. It generates modelled observations from the input.
-
-x are parameters to be optimized, pos is another input which is not optimized. For plain functions it could be the position of the measurement on the x-axis. We currently assume absolute knowledge about the position.
-"
- apply + : list-ec (: i (length x)) : * {i + 1} (list-ref x i) : expt pos 2
-
;; Start with the simple case: One variable and independent observations (R diagonal)
;; First define a truth
define x^true '(0.5 0.6 0.7 0.1)
@@ -89,6 +82,24 @@ define y⁰-num 1000
;; giving an undue weight to later values.
define y⁰-pos : list-ec (: i y⁰-num) : random y⁰-num
+;; We need an observation operator to generate observations from true values
+define : H x pos
+ . "Observation operator. It generates modelled observations from the input.
+
+x are parameters to be optimized, pos is another input which is not optimized. For plain functions it could be the position of the measurement on the x-axis. We currently assume absolute knowledge about the position.
+"
+ let*
+ : len : length x
+ ystretch y⁰-num
+ x-pos : list-ec (: i len) : * ystretch {{i + 0.5} / {len + 1}}
+ apply +
+ list-ec (: i len)
+ *
+ list-ref x i
+ expt pos 2
+ exp : - {{pos - (list-ref x-pos i)} expt 2}
+
+
;; We start with true observations which we will disturb later to get
;; the equivalent of measured observations
define y^true : list-ec (: i y⁰-pos) : H x^true i