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

标签 matlab estimation kalman-filter state-space

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

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

哪里u(k-1)v(k)是具有协方差的独立、零均值高斯噪声过程 QR ,分别。

我想使用 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/

相关文章:

filter - 陀螺仪、加速度计、磁力计和卡尔曼滤波器

arrays - 根据计数进行逐元素数组复制

image - 如何在 Matlab 中制作高斯滤波器

tdd - 使用 TDD 时,如何在规划和估算中获得足够的细节?

algorithm - 估计/预测下载完成时间

java - 高斯曲线拟合 - 参数估计 - Android/Java

recursion - 如何使用pykalman filter_update 进行在线回归

python - 在原始加速度数据上使用 PyKalman 计算位置

Matlab卷积神经网络不学习

c++ - Matlab Engine 命令窗口中的 "??? Undefined function or method"