我无法估计我想在 Matlab 中构建卡尔曼滤波器的状态空间模型的参数:
S_t = S_(t-1)+e_t
Y_t = B*S_t+v_t
Y_t
包含大约 20 个时间序列的观察矩阵在哪里,S_t
应该是一个标量。我还没有找到任何估计我的B
参数矩阵的示例代码,到目前为止我的所有测试都没有成功。
我无法估计我想在 Matlab 中构建卡尔曼滤波器的状态空间模型的参数:
S_t = S_(t-1)+e_t
Y_t = B*S_t+v_t
Y_t
包含大约 20 个时间序列的观察矩阵在哪里,S_t
应该是一个标量。我还没有找到任何估计我的B
参数矩阵的示例代码,到目前为止我的所有测试都没有成功。
我将尝试用简单的语言向您解释您应该如何使用卡尔曼滤波器。如果您需要更好的建议,请询问并提供更多信息。
在卡尔曼滤波器中,您尝试估计动态系统的真实状态(随时间变化)。您的情况是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
以及误差协方差,它告诉你你的估计有多好。
考虑一下这个过程,如果您需要任何帮助,请提出一个好的问题,并按照评论中的建议提供更多详细信息。
祝你好运