def test_pykalman_update(self): n_meas = np.random.randint(5) + 1 n_state = n_meas + np.random.randint(5) mu_state_pred = rand_vec(n_state) var_state_pred = rand_mat(n_state) x_meas = rand_vec(n_meas) mu_meas = rand_vec(n_meas) wgt_meas = rand_mat(n_meas, n_state, pd=False) var_meas = rand_mat(n_meas) _, mu_state_filt, var_state_filt = (pks._filter_correct( wgt_meas, var_meas, mu_meas, mu_state_pred, var_state_pred, x_meas)) ktv = KalmanTV(n_meas, n_state) mu_state_filt2 = np.empty(n_state) var_state_filt2 = np.empty((n_state, n_state), order='F') ktv.update(mu_state_filt2, var_state_filt2, mu_state_pred, var_state_pred, x_meas, mu_meas, wgt_meas, var_meas) self.assertAlmostEqual(rel_err(mu_state_filt, mu_state_filt2), 0.0) self.assertAlmostEqual(rel_err(var_state_filt, var_state_filt2), 0.0)
def test_update(self): n_meas = np.random.randint(5) + 1 n_state = n_meas + np.random.randint(5) mu_state_pred = rand_vec(n_state) var_state_pred = rand_mat(n_state) x_meas = rand_vec(n_meas) mu_meas = rand_vec(n_meas) wgt_meas = rand_mat(n_meas, n_state, pd=False) var_meas = rand_mat(n_meas) # pure python KFS = KTV_py(n_meas, n_state) mu_state_filt, var_state_filt = KFS.update(mu_state_pred, var_state_pred, x_meas, mu_meas, wgt_meas, var_meas) # cython ktv = KalmanTV(n_meas, n_state) mu_state_filt2 = np.empty(n_state) var_state_filt2 = np.empty((n_state, n_state), order='F') ktv.update(mu_state_filt2, var_state_filt2, mu_state_pred, var_state_pred, x_meas, mu_meas, wgt_meas, var_meas) self.assertAlmostEqual(rel_err(mu_state_filt, mu_state_filt2), 0.0) self.assertAlmostEqual(rel_err(var_state_filt, var_state_filt2), 0.0)