使用matlab卡尔曼进行非线性系统估计

Using matlab kalman for nonlinear system estimation

我有一个由一阶非线性差分方程组描述的非线性系统:

x(k) = f(x(k-1)) + u(k-1)
y(k) = h(x(k)) + v(k)

其中 u(k-1)v(k) 是独立的零均值高斯噪声过程,协方差分别为 QR

我想使用 matlab 中的 kalman 函数来估计给定 yx。但是matlab控制系统工具箱中的界面是:

[K,L,P]= kalman(sys, Q, R, N)

其中 sys 是状态-space 模型。我的问题是:如何在 matlab 中为我的一阶非线性差分方程组定义 sys

正如其他人所提到的,kalman 函数仅适用于线性系统。然而,对于高度非线性系统,扩展卡尔曼滤波器 (EKF) 可能是一个糟糕的估计器。在这些情况下,unscented 卡尔曼滤波器 (UKF) 可能更好。所以,你可能想尝试两者。

(EKF 或 UKF)的 Matlab 代码可以在 EKF/UKF Toolbox for Matlab here. Another UKF implementation that is suited for your additive noise model can be found at Matlab Central.

中找到

希望对您有所帮助。