在您使用extendedKalmanFilter
,unscentedKalmanFilter
或particleFilter
对于非线性系统的在线状态估计命令,请在将代码部署到应用程序之前验证估计。如果验证表明估计的可信度较低,则请参见在线状态估计为下一个步骤。在您验证了在线评估结果之后,您可以使用生成C/ c++代码或独立应用程序MATLAB®编码器™或MATLAB编译器™软件
要验证过滤器的性能,请使用来自不同场景的测量或模拟输出数据执行状态估计。
获取系统在不同操作条件下的输出数据和输入值-确保评估在所有感兴趣的操作条件下都能很好地工作。例如,假设您希望使用噪声位置测量来跟踪车辆的位置和速度。在不同的车辆速度和缓慢和尖锐的机动下测量数据。
对于每个感兴趣的操作条件,获得不同噪声实现的多组实验或模拟数据-以确保不同的噪声值不会影响估计性能。
对于每一种情况,通过检查输出估计误差和状态估计误差来测试滤波器的性能。有关执行和验证在线状态估计的示例,请参见基于无迹卡尔曼滤波和粒子滤波的非线性状态估计.
输出估计误差是被测输出,y
,及估计的产量,yEstimated
.利用系统的测量功能,可以得到每个时间步长的估计输出。例如,如果vdpMeasurementFcn.m
是非线性系统的测量函数,使用扩展卡尔曼滤波对象进行状态估计,obj
,你可以使用当前状态估计来计算估计输出:
yEstimated = vdpMeasurementFcn (obj.State);estimationError = y-yEstimated;
在这里obj。状态
是状态值
的状态估计之后预测
命令。
预测的状态是时间的估计吗k
,使用测量输出估计到之前的时间k - 1
.
如果你正在使用extendedKalmanFilter
或unscentedKalmanFilter
,你也可以使用剩余
得到估计误差:
[残余,residualCovariance] =剩余(obj, y);
估计误差(残差)必须具有以下特征:
小幅度-相对于输出大小的小误差增加了估计值的可信度。
零均值
低自相关,除了在零时间延迟-计算自相关,你可以使用MATLABxcorr
命令。
当你模拟非线性系统的输出数据并使用这些数据进行状态估计时,你就知道了真实的状态值。您可以计算估计状态值和真实状态值之间的误差,并对误差进行分析。在任何时间步长的估计状态值就是存储的值obj。状态
的状态估计之后预测
或正确的
命令。状态估计误差必须满足以下特点:
小的大小
零均值
低自相关,除了零时滞
还可以计算状态估计误差的协方差,并将其与存储在StateCovariance
属性的。相似的值增加了过滤器性能的可信度。
extendedKalmanFilter
|unscentedKalmanFilter
|particleFilter
|剩余