首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在单个观测上运行pykalman卡尔曼滤波?(python)

如何在单个观测上运行pykalman卡尔曼滤波?(python)
EN

Stack Overflow用户
提问于 2014-11-21 08:05:39
回答 2查看 5K关注 0票数 3

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

代码语言:javascript
复制
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

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

代码语言:javascript
复制
[[ 0.07285974  0.39708561]
 [ 0.30309693  0.2328318 ]
 [-0.5533711  -0.0415223 ]]

但是,如果我只提供一个观察结果,代码就会失败:

代码语言:javascript
复制
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

有以下错误:

代码语言:javascript
复制
ValueError: could not broadcast input array from shape (2,2) into shape (2,1)

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-09-08 06:40:15

来自于:http://pykalman.github.io/#kalmanfilter的文档

代码语言:javascript
复制
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的状态均值和状态协方差(用于下一次更新)。

票数 2
EN

Stack Overflow用户

发布于 2017-06-23 22:17:18

如果我正确理解卡尔曼滤波算法,你就可以用一个观察来预测状态。但是,增益和协方差相差很远,预测结果与实际状态也不太接近。你需要给一个卡尔曼滤波器一些观察,作为训练集,以达到一个稳定的状态。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27056691

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档