def inplace_condition_on_cov(self,Sigma_xy,Sigma_yy,my_prediction,obs_distn): 'cov version useful for linearized approximations; compare to inplace_condition_on for the idea' self.Sigma, self.mu # make sure we are in distribution form self._mu += Sigma_xy.dot(solve_psd(Sigma_yy+obs_distn.Sigma,obs_distn.mu - my_prediction)) self._Sigma -= Sigma_xy.dot(solve_psd(Sigma_yy+obs_distn.Sigma,Sigma_xy.T)) self._J = self._h = None # invalidate return self
def compute_Xs(Gamma_i,Gamma_im1,Oi,Oim1): Xihat = solve_psd(Gamma_i.T.dot(Gamma_i), Gamma_i.T.dot(Oi)) Xip1hat = solve_psd(Gamma_im1.T.dot(Gamma_im1), Gamma_im1.T.dot(Oim1)) return Xihat, Xip1hat
def h(self): if self._h is None: self._h = solve_psd(self._Sigma,self._mu) if not self._is_diagonal else self._mu / self._Sigma return self._h
def mu(self): if self._mu is None: self._mu = solve_psd(self._J,self._h) if not self._is_diagonal else self._h / self._J return self._mu