2

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

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

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

4

1 回答 1

1

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

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

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

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

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

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

祝你好运

于 2013-03-17T14:05:27.140 回答