我无法估算我的状态空间模型的参数,我想用它来在Matlab中构建我的卡尔曼滤波器:
S_t = S_(t-1)+e_t
Y_t = B*S_t+v_t
其中Y_t
是包含大约20个时间序列的观察矩阵,而S_t
应该是标量。我还没有找到任何估算我的B
参数矩阵的示例代码,到目前为止我的所有测试都没有成功。
答案 0 :(得分:1)
我会用简单的语言向你解释你应该用卡尔曼滤波器做什么。如果您需要更好的建议,请询问并提供更多信息。
在卡尔曼滤波器中,您尝试估计动态系统的真实状态(随时间变化)。您的情况中的状态为S_t
(可能是来自某个系统的电流,GPS位置或任何其他数字或一组数字)。在动态系统中,通常你有一个转换矩阵,它告诉你从状态S_(t-1)
到状态S_t
的变化。正如您所写的那样,您的转换矩阵似乎等于1.换句话说,只有添加了高斯噪声,您才能期望与前一个值相同的值。高斯噪声来自所有不同的来源,这些来源很难建模,与你的国家不相关。
现在,您的系统状态通常由某个传感器测量,并且您的传感器读数为Y_t
。阅读与B
观察矩阵的状态有关。每个传感器都有噪声v_t
,它来自传感器的不完美。 Y_t
是您想要估算的州的读数。
在您写的内容中,我可以理解您有Y_1
到Y_20
的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
的估算以及误差协方差,它会告诉您估算的效果。
考虑一下这个程序,如果您需要任何帮助,请按照评论中的建议提供更多详细信息,提出问题。
祝你好运