GaussianObservation¶
Bases: ObservationModel
Nonlinear Gaussian observation model.
Observations are modeled as
where \(h\) is a user-provided measurement function and \(R\) is the observation noise covariance.
__init__(h: Callable[[State, Control, Time], jax.Array], R: jax.Array)
¶
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
h
|
Callable[[State, Control, Time], Array]
|
Measurement function mapping \((x, u, t)\) to the mean observation. |
required |
R
|
Array
|
Observation noise covariance with shape \((d_y, d_y)\). |
required |
Structured inference
You can always instantiate a model without this structured class (for example,
by passing a generic callable observation model). But GaussianObservation
explicitly signals Gaussian emission structure that enables fast ensemble
Kalman methods; see Filters and EnKFConfig
/ ContinuousTimeEnKFConfig in
FilterConfigs.
Without these exploitable structures, marginalizing latent processes during
parameter inference typically requires particle filters (PFConfig and
related particle methods), which are often slower.
Example¶
Nonlinear Gaussian observation
import jax.numpy as jnp
from dynestyx import GaussianObservation
def h(x, u, t):
# Example nonlinear measurement function
return jnp.array([x[0] ** 2 + 0.1 * x[1]])
observation = GaussianObservation(
h=h,
R=0.05 * jnp.eye(1),
)
x_t = jnp.array([1.5, -0.3])
dist_y = observation(x_t, u=None, t=0.0) # p(y_t | x_t, t)