主要内容

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

在您使用extendedKalmanFilterunscentedKalmanFilterparticleFilter对于非线性系统的在线状态估计命令,请在将代码部署到应用程序之前验证估计。如果验证表明估计的可信度较低,则请参见在线状态估计为下一个步骤。在您验证了在线评估结果之后,您可以使用生成C/ c++代码或独立应用程序MATLAB®编码器™MATLAB编译器™软件

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

  • 获取系统在不同操作条件下的输出数据和输入值-确保评估在所有感兴趣的操作条件下都能很好地工作。例如,假设您希望使用噪声位置测量来跟踪车辆的位置和速度。在不同的车辆速度和缓慢和尖锐的机动下测量数据。

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

对于每一种情况,通过检查输出估计误差和状态估计误差来测试滤波器的性能。有关执行和验证在线状态估计的示例,请参见基于无迹卡尔曼滤波和粒子滤波的非线性状态估计

检查输出估计误差

输出估计误差是被测输出,y,及估计的产量,yEstimated.利用系统的测量功能,可以得到每个时间步长的估计输出。例如,如果vdpMeasurementFcn.m是非线性系统的测量函数,使用扩展卡尔曼滤波对象进行状态估计,obj,你可以使用当前状态估计来计算估计输出:

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

在这里obj。状态是状态值 x k | k 1 的状态估计之后预测命令。 x k | k 1 预测的状态是时间的估计吗k,使用测量输出估计到之前的时间k - 1

如果你正在使用extendedKalmanFilterunscentedKalmanFilter,你也可以使用剩余得到估计误差:

[残余,residualCovariance] =剩余(obj, y);

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

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

  • 零均值

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

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

当你模拟非线性系统的输出数据并使用这些数据进行状态估计时,你就知道了真实的状态值。您可以计算估计状态值和真实状态值之间的误差,并对误差进行分析。在任何时间步长的估计状态值就是存储的值obj。状态的状态估计之后预测正确的命令。状态估计误差必须满足以下特点:

  • 小的大小

  • 零均值

  • 低自相关,除了零时滞

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

另请参阅

|||

相关的话题