我有行驶中的汽车的小数据集:
Data_=[time x,y,z]; %# ONLY THIS DATA
我知道在这种情况下速度和加速度不是恒定的。
我想在不同时间估算汽车位置。我决定使用卡尔曼滤波器。我搜索了卡尔曼滤波器,但找不到用于以速度和加速度跟踪3D空间中对象的代码。我不知道从哪里开始。卡尔曼滤波器可以自动处理速度和加速度吗?
有人可以帮助我并提供一些链接或指导吗?
我的建议是转到Mathworks file exchange和search for Kalman filters
您将为这种非常标准的算法找到一些不错的代码。
就Kalman过滤器而言,它们就是所谓的Predictor-Estimator。也就是说,给定直到时间n
的观察结果,他们都可以预测时间n-1
的状态。然后,在时间n
收到观测值之后,您可以进行直到(包括)时间n
的所有时间的估计(有些人称其为平滑)。估计部分是通过所谓的[[innovation和当前的Kalman增益完成的。
观察向量
是您可以观察到的有关系统的不同之处。例如,在恒定加速度模型中,您可能会假设状态仅包含3个位置值和3个速度值(每个x,y和z)。决定状态空间和状态转换模型(在没有观察值的情况下,如何期望状态发生变化)是过滤器工作的设计者。您必须选择一个状态转移矩阵,您必须了解观测误差的协方差矩阵,状态转移矩阵中的误差协方差矩阵(例如,状态转换模型),以及初始状态估算值的协方差矩阵(还必须选择)。您还必须选择状态向量和观察向量之间的关系。如果假设高斯观测噪声,高斯过程噪声和其他一些标准物,则[[卡尔曼滤波器是
最大似然最佳线性估计器
]。Kalman Filter
是一个循环中的5-6行。您不需要任何人的实现。vision.KalmanFilter
对象。这是如何使用它来跟踪对象的example。该示例为2D,但可以轻松地将其推广到3D。persistent