| 183 | } |
| 184 | |
| 185 | Bayes_base::Float |
| 186 | Information_scheme::observe_innovation (Linrz_correlated_observe_model& h, const FM::Vec& s) |
| 187 | /* Correlated innovation observe |
| 188 | */ |
| 189 | { |
| 190 | // Size consistency, z to model |
| 191 | if (s.size() != h.Z.size1()) |
| 192 | error (Logic_exception("observation and model size inconsistent")); |
| 193 | observe_size (s.size());// Dynamic sizing |
| 194 | |
| 195 | Vec zz(s + prod(h.Hx,x)); // Strange EIF observation object |
| 196 | |
| 197 | // Observation Information |
| 198 | Float rcond = UdUinversePD (ZI, h.Z); |
| 199 | rclimit.check_PD(rcond, "Z not PD in observe"); |
| 200 | |
| 201 | RowMatrix HxT (trans(h.Hx)); |
| 202 | RowMatrix HxTZI (prod(HxT, ZI)); |
| 203 | // Calculate EIF i = Hx'*ZI*zz |
| 204 | noalias(i) = prod(HxTZI, zz); |
| 205 | // Calculate EIF I = Hx'*ZI*Hx |
| 206 | noalias(I) = prod(HxTZI, trans(HxT)); // use column matrix trans(HxT) |
| 207 | |
| 208 | noalias(y) += i; |
| 209 | noalias(Y) += I; |
| 210 | update_required = true; |
| 211 | |
| 212 | return rcond; |
| 213 | } |
| 214 | |
| 215 | Bayes_base::Float |
| 216 | Information_scheme::observe_innovation (Linrz_uncorrelated_observe_model& h, const FM::Vec& s) |
nothing calls this directly
no test coverage detected