def covariance_exact(Cl, Kk, Gk): """ Covariance update for exact constraints """ # Rlk = et.mtxabat(Gk, Cl) # return Cl - et.mtxab(Kk, 2*et.mtxab(Gk, Cl) - et.mtxabt(Rlk, Kk)) return et.mtxabat(np.eye(Cl.shape[-1]) - et.mtxab(Kk, Gk), Cl)
def covariance_normal(Cl, Kk, Hk, Rlk): """ Simplified, but numerically stable covariance update """ return Cl - et.mtxab(Kk, 2 * et.mtxab(Hk, Cl) - et.mtxabt(Rlk, Kk))
def covariance_full(Cl, Kk, Hk, Vk): """ Full expression for covariance update """ return et.mtxabat(np.eye(Cl.shape[-1]) - et.mtxab(Kk, Hk), Cl) + et.mtxabat(Kk, Vk)
def covariance_fast(Cl, Kk, Hk): """ Simple but numerically unstable covariance update """ return et.mtxab(np.eye(Cl.shape[-1]) - et.mtxab(Kk, Hk), Cl)
def covariance_exact(Cl, Kk, Gk): """ Covariance update for exact constraints """ return et.mtxabat(np.eye(Cl.shape[-1]) - et.mtxab(Kk, Gk), Cl)