主要内容

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

在使用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,你也可以用剩余获取估计误差:

[residual,residualCovariance] = residual(obj,y);

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

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

  • 零均值

  • 低自相关性,除了在零时滞-要计算自相关性,您可以使用MATLABxcorr命令。

研究模拟数据的状态估计误差

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

  • 小的大小

  • 零均值

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

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

另请参阅

|||

相关的话题