Pykalman AdditiveUnscentedKalmanFilter Инициализация
Я пытаюсь использовать фильтр AdditiveUnscentedKalman из pykalman. Мне дают шумные значения x, y, и я пытаюсь получить x, y, xdot, ydot из фильтра.
Я получаю значения из фильтра, но это не то, что я ожидаю. Состояние: [[ 481.65737052 477.23904382 0. 0. ] [ 659.29999618 659.28265402 58.33365188 59.77883149]] Obs: [478, 660, -0.4666666666666667, -0.36666666666666664, -2.4756234162106814, 1 216 185 684, 1 214 182, 684, 1 212 181, 684, 1 212, 184, 21, 21, 21, 21, 21.
Obs [0] и obs [1] - это измеренные значения xy, а состояние - это то, что выходит из фильтра. состояние [0] [0] и состояние [1] [0] выглядят как x, y, а состояние [0] [1] и состояние [1] [1] представляются как x, y. Я понятия не имею, какими должны быть другие числа, поскольку они не являются приемлемыми скоростями.
Если бы кто-то мог просто подтвердить, что я использую правильную функцию перехода, это будет с благодарностью.
transition_covariance = np.array([[100.0, 0.0, 0.0, 0.0],
[0.0, 100.0, 0.0, 0.0],
[0.0, 0.0, 100.0, 0.0],
[0.0, 0.0, 0.0, 100.0]])
observation_covariance = np.array([[0.4, 0.0],
[0.0, 0.4]])
initial_state_covariance = np.array([[100.0, 0.0, 0.0, 0.0],
[0.0, 100.0, 0.0, 0.0],
[0.0, 0.0, 1000.0, 0.0],
[0.0, 0.0, 0.0, 1000.0]])
self.ukf = AdditiveUnscentedKalmanFilter(transition_functions = self.transition_function,
observation_functions = self.observation_function,
transition_covariance = transition_covariance,
observation_covariance = observation_covariance,
initial_state_mean = initial_conditions,
initial_state_covariance = initial_state_covariance)
def get_states(self, observations):
return self.ukf.filter(observations)
# [x, y, xvel, yvel]
def transition_function(self, state):
return np.array([state[0] + state[2] * self.dt,
state[1] + state[3] * self.dt,
state[2],
state[3]])
def observation_function(self, state):
om = np.array([[1.0, 0.0, 0.0, 0.0],
[0.0, 1.0, 0.0, 0.0]])
return np.matmul(om, state)
Я запутался, потому что вывод.filter представляет собой матрицу 2X4, где я ожидал бы 1X4.