(Arne Babenhauserheide)
2016-11-26: start with a dense covariance matrix P start with a dense covariance matrix P
diff --git a/examples/ensemble-estimation.w b/examples/ensemble-estimation.w
--- a/examples/ensemble-estimation.w
+++ b/examples/ensemble-estimation.w
@@ -53,6 +53,17 @@ define : make-diagonal-matrix-with-trace
list-ref trace i
. 0.0
+define : make-covariance-matrix-with-offdiagonals-using-stds stds
+ . "this is a dense covariance matrix with (√1/N std_i std_j) as the off-diagonal elements, with N the number of elements in the stds."
+ let : : dim : length stds
+ list-ec (: i dim)
+ list-ec (: j dim)
+ if : = i j
+ expt (list-ref stds i) 2
+ ; add smaller off-diag elements
+ * (sqrt (/ 1 dim)) (list-ref stds i) (list-ref stds j)
+
+; TODO: Allow for off-diagonal elements
define-class <sparse-covariance-matrix> ()
trace #:getter get-trace #:init-keyword #:trace
zeros #:getter get-zeros #:init-keyword #:zeros
@@ -80,7 +91,8 @@ define-method : length (M <sparse-covari
define : make-covariance-matrix-from-standard-deviations stds
; make-diagonal-matrix-with-trace : map (lambda (x) (expt x 2)) stds
- make <sparse-covariance-matrix> #:stds stds
+ ; make <sparse-covariance-matrix> #:stds stds
+ make-covariance-matrix-with-offdiagonals-using-stds stds
define : mean l
. "Calculate the average value of l (numbers)."