【问题标题】:Kalman filter MLE parameter estimation卡尔曼滤波器 MLE 参数估计
【发布时间】:2013-03-17 11:05:51
【问题描述】:

我无法估计状态空间模型的参数,我想用这些参数在 Matlab 中构建卡尔曼滤波器:

 S_t = S_(t-1)+e_t
 Y_t = B*S_t+v_t

Y_t 是包含大约 20 个时间序列的观察矩阵,S_t 应该是一个标量。我还没有找到任何示例代码来估计我的B 参数矩阵,并且到目前为止我的所有测试都不成功。

【问题讨论】:

  • 嗨。 StackOverflow 通常会拒绝没有努力的答案,所以请展示你到目前为止所做的事情,并解释为什么不成功。

标签: matlab kalman-filter


【解决方案1】:

我将尝试用简单的语言向您解释您应该如何使用卡尔曼滤波器。如果您需要更好的建议,请询问并提供更多信息。

在卡尔曼滤波器中,您尝试估计动态系统的真实状态(随时间变化)。在您的情况下,状态是S_t(可能是来自某个系统的电流、GPS 位置或任何其他数字或一组数字)。在动态系统中,通常你有一个转换矩阵,它告诉你从状态S_(t-1) 到状态S_t 的变化。正如您所写,您的转换矩阵似乎将等于 1。换句话说,您应该期望与前一个值相同的值,只是添加了高斯噪声。高斯噪声来自所有难以建模且与您的状态不相关的不同来源。

现在您的系统状态通常由某个传感器测量,并且您从传感器获得了 Y_t 读数。读数通过B 观察矩阵与状态相关。每个传感器都有其噪声v_t,这来自传感器的缺陷。 Y_t 是您想要估计的状态读数。

在您所写的内容中,我可以理解您从Y_1Y_20 有20 个读数。您想估计 20 次读数后动态系统状态的真实值,比如说 20 秒。首先,您需要考虑您的转换矩阵是否正确,即 A=1 并且S_t=A*S_(t-1)+e_tS_t=S_(t-1)+e_t 相同。要对A 建模,您需要对您的动力系统有所了解,通常它是通过使用微分方程来建模的。在您为系统建模后,请考虑您想要估计的内容与您的测量值(传感器上的内容)之间的关系,这会导致您的 B

卡尔曼滤波器是一个迭代滤波器,因此对于您的时间序列Y,您插入您的模型并迭代测量。您应该完成对Y-2Y_3、...直到Y_20 的估计以及告诉您估计有多好的误差协方差。

考虑一下这个过程,如果您需要任何帮助,请提出很好的问题,并按照 cmets 中的建议提供更多详细信息。

祝你好运

【讨论】:

    猜你喜欢
    • 2012-01-17
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多