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

Posted

技术标签:

【中文标题】使用matlab卡尔曼进行非线性系统估计【英文标题】:Using matlab kalman for nonlinear system estimation 【发布时间】:2016-08-16 20:01:22 【问题描述】:

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

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

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

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

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

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

【问题讨论】:

卡尔曼滤波器只能用于线性系统,因为该理论不适用于非线性系统。如果您的非线性系统在平衡点附近运行,您可以在该点线性化系统,然后使用卡尔曼滤波器进行估计。你可能想看看en.wikipedia.org/wiki/Extended_Kalman_filter 我同意。您需要使用扩展卡尔曼滤波器,其中fh 将围绕先前估计的状态进行线性化。 【参考方案1】:

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

可以在EKF/UKF Toolbox for Matlab here 中找到任一(EKF 或 UKF)的 Matlab 代码。另一个适合您的加性噪声​​模型的 UKF 实现可以在 at Matlab Central 找到。

希望这会有所帮助。

【讨论】:

以上是关于使用matlab卡尔曼进行非线性系统估计的主要内容,如果未能解决你的问题,请参考以下文章

翻译: 使用非线性卡尔曼滤波来估计信号

翻译: 使用非线性卡尔曼滤波来估计信号

第六讲 非线性优化(高翔slam)

matlab代码复现:目标跟踪多传感器融合非线性滤波等探讨及技术支持

matlab代码复现:目标跟踪多传感器融合非线性滤波等探讨及技术支持

matlab代码复现:目标跟踪多传感器融合非线性滤波等探讨及技术支持