예제 #1
0
 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)
예제 #2
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)