matlab-kalman在非线性系统估计中的应用

matlab-kalman在非线性系统估计中的应用,matlab,estimation,kalman-filter,state-space,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)分别是协方差Q和R的独立零均值高斯噪声过程 我想使用matlab中的kalman函数来估计x给定的y。但是,matlab控制系统工具箱中的接口为: [K,L,P]= kalman(sys, Q, R, N) 其中,sys是状态空间模型。我的问题是:如何在matlab中为一阶非线性差分方程组定义sys?如其他人所述,kal

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

x(k) = f(x(k-1)) + u(k-1)
y(k) = h(x(k)) + v(k)
其中,
u(k-1)
v(k)
分别是协方差
Q
R
的独立零均值高斯噪声过程

我想使用matlab中的
kalman
函数来估计
x
给定的
y
。但是,matlab控制系统工具箱中的接口为:

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

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

如其他人所述,
kalman
函数仅适用于线性系统。然而,对于高度非线性系统,扩展卡尔曼滤波器(EKF)可能是一个较差的估计器。在这些情况下,无迹卡尔曼滤波器(UKF)可能更好。所以,你可能想两种都试试

可以在中找到(EKF或UKF)的Matlab代码。可以找到另一个适用于附加噪声模型的UKF实现


希望这能有所帮助。

卡尔曼滤波器只能用于线性系统,因为该理论不适用于非线性系统。如果您的非线性系统在平衡点附近运行,您可以在该点对系统进行线性化,然后使用卡尔曼滤波器进行估计。你可能想知道我是否同意。您需要使用扩展卡尔曼滤波器,其中
f
h
将围绕先前估计的状态进行线性化。