首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带pykalman的卡尔曼滤波器2d

带pykalman的卡尔曼滤波器2d
EN

Stack Overflow用户
提问于 2021-02-02 09:57:00
回答 1查看 658关注 0票数 0

我试图使用卡尔曼滤波数据集的GPS数据,以减少噪音。为此,我检查了是否已经有了一个在线实现,并找到了pykalman。我试着使用它,但出于某种原因,我不知道我应该如何正确地分配矩阵。当我尝试运行它时,它告诉我我有一个维度错误。首先,我要做的是:我想让卡尔曼滤波器用旧的位置+速度估计下一次的位置。下一步的速度就是旧的速度。每一个时间步骤都是非常精确的1秒。我有x和y方向的度量,对于x_t、y_t、vx_t、vy_t,过渡矩阵应该如下所示(我认为):

代码语言:javascript
复制
transition_matrix = np.array([[1, 0,1,0],
                              [0, 1,0,1],
                              [0,0,1,0],
                              [0,0,0,1]])

我的测量结果如下:

代码语言:javascript
复制
[[ 7.616984 47.53661 ]
 [ 7.616999 47.536629]
 [ 7.616997 47.536635]
 ...
 [ 7.617117 47.536999]
 [ 7.617117 47.536999]
 [ 7.617117 47.536999]]

到目前为止,我尝试过的是:我试着拼凑一下,它是如何从各种在线资源中运行的,并想出了如下结论:

代码语言:javascript
复制
import numpy as np
import pykalman
import geopandas
measurments= np.asarray(gdf[["Longitude_deg", "Latitude_deg"]])
#gdf is a geopandas dataframe, but no i'm not currently using the geometry of it.
transition_matrix = np.array([[1, 0,1,0],
                              [0, 1,0,1],
                              [0,0,1,0],
                              [0,0,0,1]])
#the pykalman documentation says the model parameter can but don't have to be specified and it will simply use defaults for unspecified parameters:
kf = pykalman.KalmanFilter(
      transition_matrices =transition_matrix
)
        
(smoothed_state_means, smoothed_state_covariances) = kf.smooth(measurments)

尝试运行最后一部分将给我以下错误:

形状(2,1)和(2,)不对齐:1 (dim 1) != 2 (dim 0)

据我所知,所使用的矩阵没有正确的大小可用于彼此。一般来说,我对矩阵的理解是非常有限的。我希望有人能帮我。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-02 10:24:06

根据您的模型,您的状态向量如下:[x, y, v_x, v_y],您只观察(测量) [x, y]。因此,您需要正确地定义度量矩阵H,它将真实的状态空间映射到观察到的空间:z=Hx + noise。所以在你的例子中,这是非常简单的:

代码语言:javascript
复制
observation_matrix = np.array(
    [[1, 0, 0, 0],
     [0, 1, 0, 0]]
)

这将适当地发挥作用:

代码语言:javascript
复制
kf = pykalman.KalmanFilter(
    transition_matrices=transition_matrix,
    observation_matrices=observation_matrix
)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66007351

复制
相关文章

相似问题

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