卡尔曼滤波器MLE参数估计

时间:2013-03-17 11:05:52

标签: matlab kalman-filter

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

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

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

1 个答案:

答案 0 :(得分: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的估算以及误差协方差,它会告诉您估算的效果。

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

祝你好运