主要内容

在命令行验证在线状态估计

在你使用extendedKalmanFilterunscentedKalmanFilter或者particleFilter用于非线性系统在线状态估计的命令,在应用程序中部署代码之前验证估计。如果验证表明估计的置信度较低,那么请参阅在线状态估计故障排除为下一个步骤。在验证了在线评估结果之后,您可以使用以下方法生成C/ c++代码或独立的应用程序MATLAB®编码器™或者MATLAB编译器™软件

要验证过滤器的性能,请使用来自不同场景的测量或模拟输出数据执行状态估计。

  • 获取系统在不同操作条件下的输出数据和输入值-确保估算在所有感兴趣的操作条件下都能很好地工作。例如,假设您想要使用噪声位置测量来跟踪车辆的位置和速度。测量不同车速、慢速和急转弯的数据。

  • 对于每个感兴趣的操作条件,获得具有不同噪声实现的多组实验或模拟数据-确保不同噪声值不会恶化估计性能。

对于每一个场景,通过检查输出估计误差和状态估计误差来测试滤波器性能。有关执行和验证在线状态估计的示例,请参见非线性状态估计使用Unscented Kalman滤波器和粒子滤波器

检查输出估计误差

输出估计误差是测量输出之间的差异,y,以及估计的产出,yEstimated.通过使用系统的测量功能,可以得到每个时间步长的估计输出。例如,如果vdpMeasurementFcn.m是非线性系统的测量功能,您正在使用扩展的卡尔曼筛选对象执行状态估计,obj,可以使用当前状态估计来计算估计输出,如下所示:

yEstimated = vdpMeasurementFcn (obj.State);estimationError = y-yEstimated;

在这里obj。状态为状态值 x k | k 1 在你用预测命令。 x k | k 1 是预测的状态估计时间k,使用前一时间的测量输出进行估计k - 1

如果你正在使用extendedKalmanFilter或者unscentedKalmanFilter,你也可以用剩余要获取估计错误:

[残余,残留转移性] =残差(OBJ,Y);

估计误差(残差)必须具有以下特征:

  • 小幅度-相对于输出大小的小误差增加了估计值的置信度。

  • 零意思

  • 低自相关,除了在零时间滞后-计算自相关,你可以使用MATLABxcorr命令。

检查模拟数据的状态估计误差

当您模拟非线性系统的输出数据并使用该数据进行状态估计时,您知道真实状态值。您可以计算估计和真实状态值之间的错误并分析错误。随时步骤的估计状态值是存储在中的值obj。状态在你用预测或者正确的命令。状态估计误差必须满足以下特征:

  • 小的大小

  • 零意思

  • 低自相关性,除了在零时滞

您还可以计算状态估计误差的协方差,并将其与存储在StateCovariance过滤器的属性。类似的值增加对滤波器性能的置信度。

另请参阅

|||

相关话题