繁体   English   中英

如何在一次观察中运行pykalman卡尔曼滤波器? (蟒蛇)

[英]How to run pykalman Kalman Filter on a single observation? (python)

我可以运行pykalman文档中给出的简单pykalman卡尔曼滤波器示例:

import pykalman
import numpy as np
kf = pykalman.KalmanFilter(transition_matrices = [[1, 1], [0, 1]], observation_matrices = [[0.1, 0.5], [-0.3, 0.0]])
measurements = np.asarray([[1,0], [0,0], [0,1]])  # 3 observations
(filtered_state_means, filtered_state_covariances) = kf.filter(measurements)
print filtered_state_means

这正确地返回状态估计(每个观察一个):

[[ 0.07285974  0.39708561]
 [ 0.30309693  0.2328318 ]
 [-0.5533711  -0.0415223 ]]

但是,如果我只提供一个观察,则代码将失败:

import pykalman
import numpy as np
kf = pykalman.KalmanFilter(transition_matrices = [[1, 1], [0, 1]], observation_matrices = [[0.1, 0.5], [-0.3, 0.0]])
measurements = np.asarray([[1,0]])  # 1 observation
(filtered_state_means, filtered_state_covariances) = kf.filter(measurements)
print filtered_state_means

出现以下错误:

ValueError: could not broadcast input array from shape (2,2) into shape (2,1)

如何使用pykalman仅使用一次观察来更新初始状态和初始协方差?

来自以下网站的文档: http//pykalman.github.io/#kalmanfilter

filter_update(filtered_state_mean, filtered_state_covariance, observation=None, transition_matrix=None, transition_offset=None, transition_covariance=None, observation_matrix=None, observation_offset=None, observation_covariance=None)

这在时间t接受filtered_state_mean和filtered_state_covariance,在t + 1接受观察,并在t + 1返回状态均值和状态协方差(用于下一次更新)

如果我正确理解卡尔曼滤波算法,您可以使用一个观察来预测状态。 但是,增益和协方差将会偏离,预测将无法接近实际状态。 您需要为卡尔曼滤波器提供一些观察结果作为训练集以达到稳定状态

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM