我有一个由一阶非线性差分方程集合描述的非线性系统:
x(k) = f(x(k-1)) + u(k-1)
y(k) = h(x(k)) + v(k)
哪里u(k-1)
和v(k)
是具有协方差的独立、零均值高斯噪声过程 Q
和R
,分别。
我想使用 kalman
matlab中的函数估计x
给定y
。然而matlab控制系统工具箱中的界面是:
[K,L,P]= kalman(sys, Q, R, N)
哪里sys
是状态空间模型。我的问题是:我如何定义sys
对于 matlab 中的一阶非线性差分方程组?
最佳答案
正如其他人提到的,kalman
函数仅适用于线性系统。然而,对于高度非线性系统,扩展卡尔曼滤波器 (EKF) 可能是一个较差的估计器。在这些情况下,无味卡尔曼滤波器 (UKF) 可能更好。因此,您可能想尝试两者。
(EKF 或 UKF)的 Matlab 代码可以在 EKF/UKF Toolbox for Matlab here 中找到。 。可以找到另一个适合您的加性噪声模型的 UKF 实现 at Matlab Central .
希望这有帮助。
关于matlab - 使用matlab卡尔曼进行非线性系统估计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38983473/