unscentedKalmanFilter
创建无迹卡尔曼滤波器对象,用于在线状态估计
说明
unscentedKalmanFilter 利用离散时间无迹卡尔曼滤波算法,为离散时间非线性系统的在线状态估计创建了一个对象。
进行在线状态估计时,首先需要创建非线性状态转移函数 f 和测量函数 h。然后,您可以使用这些非线性函数构造 unscentedKalmanFilter 对象,并指定噪声项是加性的还是非加性的。
创建对象后,使用 predict 命令预测下一个时间步的状态估计值,并使用 correct 命令结合无迹卡尔曼滤波算法和实时数据对状态估计值进行校正。有关该算法的信息,请参阅算法。
创建对象
语法
描述
创建了一个无迹卡尔曼滤波器对象,用于对离散时间非线性系统进行在线状态估计。obj = unscentedKalmanFilter(stateTransitionFcn,measurementFcn,initialState)
stateTransitionFcn是一个函数,它根据时间 k-1 时的状态向量,计算时间 k 时的系统状态。该函数存储在对象的StateTransitionFcn属性中。measurementFcn是一个函数,它根据时间 k 时的状态,计算系统在时间 k 时的输出测量值。该函数存储在对象的MeasurementFcn属性中。initialState指定状态估计值的初始值。该值存储在对象的State属性中。
创建对象后,使用 correct 和 predict 函数,基于离散时间无迹卡尔曼滤波算法和实时数据,更新状态估计值和状态估计误差协方差值。
predict使用时间步长 k –1 时的状态值,将obj.State和obj.StateCovariance更新为时间步长 k 时的预测值。correct使用时间步 k 的测量数据,将obj.State和obj.StateCovariance更新为时间步 k 的估计值。
还会使用名称-值参量来设置属性。如果在创建时未指定状态转移函数、测量函数和初始状态值,请使用点表示法进行指定。例如,对于初始状态值为 obj = unscentedKalmanFilter(___,PropertyName=Value)[1;0] 的两态系统,若要在创建后指定这些值,请使用 obj.State = [1;0]。
属性
对象函数
correct | Correct state and state estimation error covariance using extended or unscented Kalman filter, or particle filter and measurements |
predict | Predict state and state estimation error covariance at next time step using extended or unscented Kalman filter, or particle filter |
residual | Return measurement residual and residual covariance when using extended or unscented Kalman filter |
clone | 复制在线状态估计对象 |
示例
算法
离散时间无迹卡尔曼滤波算法可对离散时间非线性系统进行在线状态估计。
考虑一个具有状态 x、输入 u、输出 y、过程噪声 w 和测量噪声 v 的系统。假设可以将该装置表示为一个非线性系统。

该算法使用您指定的状态转移函数和测量函数,计算非线性系统的状态估计值 。该软件允许您将这些函数中的噪声指定为加性或非加性:
加性噪声项 - 状态转移方程和测量方程的形式如下:
这里,f 是一个非线性状态转移函数,用于描述状态
x从一个时间步到下一个时间步的演化过程。非线性测量函数 h 将x与时间步k处的测量值y相关联。w和v分别是均值为零、互不相关的过程噪声和测量噪声。这些函数还可以有额外的参量,在方程中分别用us和um表示。例如,这些附加参量可以是时间步长k或非线性系统的输入u。此类参量可以有多个。请注意,这两个方程中的噪声项都是可加的。也就是说,
x(k)与过程噪声w(k-1)呈线性关系,而y(k)与测量噪声v(k)呈线性关系。非加性噪声项 - 该软件还支持更复杂的状态转移和测量函数,其中状态 x[k] 和测量 y[k] 分别是过程噪声和测量噪声的非线性函数。当噪声项具有非加性性质时,状态转移方程和测量方程具有以下形式:
进行在线状态估计时,首先需要创建非线性状态转移函数 f 和测量函数 h。然后,您可以使用这些非线性函数构造 unscentedKalmanFilter 对象,并指定噪声项是加性的还是非加性的。
创建对象后,使用 predict 命令预测下一个时间步的状态估计值,并使用 correct 命令结合无迹卡尔曼滤波算法和实时数据对状态估计值进行校正。有关该算法的详细信息,请参阅Extended and Unscented Kalman Filter Algorithms for Online State Estimation。
扩展功能
版本历史记录
在 R2016b 中推出另请参阅
函数
predict|correct|residual|clone|extendedKalmanFilter
模块
主题
- Nonlinear State Estimation Using Unscented Kalman Filter and Particle Filter
- Generate Code for Online State Estimation in MATLAB
- What Is Online Estimation?
- Extended and Unscented Kalman Filter Algorithms for Online State Estimation
- Validate Online State Estimation at the Command Line
- Troubleshoot Online State Estimation