在你使用extendedKalmanFilter
,unscentedKalmanFilter
或者particleFilter
用于非线性系统在线状态估计的命令,在应用程序中部署代码之前验证估计。如果验证表明估计的置信度较低,那么请参阅在线状态估计故障排除为下一个步骤。在验证了在线评估结果之后,您可以使用以下方法生成C/ c++代码或独立的应用程序MATLAB®编码器™或者MATLAB编译器™软件
要验证过滤器的性能,请使用来自不同场景的测量或模拟输出数据执行状态估计。
获取系统在不同操作条件下的输出数据和输入值-确保估算在所有感兴趣的操作条件下都能很好地工作。例如,假设您想要使用噪声位置测量来跟踪车辆的位置和速度。测量不同车速、慢速和急转弯的数据。
对于每个感兴趣的操作条件,获得具有不同噪声实现的多组实验或模拟数据-确保不同噪声值不会恶化估计性能。
对于每一个场景,通过检查输出估计误差和状态估计误差来测试滤波器性能。有关执行和验证在线状态估计的示例,请参见非线性状态估计使用Unscented Kalman滤波器和粒子滤波器.
输出估计误差是测量输出之间的差异,y
,以及估计的产出,yEstimated
.通过使用系统的测量功能,可以得到每个时间步长的估计输出。例如,如果vdpMeasurementFcn.m
是非线性系统的测量功能,您正在使用扩展的卡尔曼筛选对象执行状态估计,obj
,可以使用当前状态估计来计算估计输出,如下所示:
yEstimated = vdpMeasurementFcn (obj.State);estimationError = y-yEstimated;
在这里obj。状态
为状态值
在你用预测
命令。
是预测的状态估计时间k
,使用前一时间的测量输出进行估计k - 1
.
如果你正在使用extendedKalmanFilter
或者unscentedKalmanFilter
,你也可以用剩余
要获取估计错误:
[残余,残留转移性] =残差(OBJ,Y);
估计误差(残差)必须具有以下特征:
小幅度-相对于输出大小的小误差增加了估计值的置信度。
零意思
低自相关,除了在零时间滞后-计算自相关,你可以使用MATLABxcorr
命令。
当您模拟非线性系统的输出数据并使用该数据进行状态估计时,您知道真实状态值。您可以计算估计和真实状态值之间的错误并分析错误。随时步骤的估计状态值是存储在中的值obj。状态
在你用预测
或者正确的
命令。状态估计误差必须满足以下特征:
小的大小
零意思
低自相关性,除了在零时滞
您还可以计算状态估计误差的协方差,并将其与存储在StateCovariance
过滤器的属性。类似的值增加对滤波器性能的置信度。
extendedKalmanFilter
|particleFilter
|剩余
|unscentedKalmanFilter