主要内容

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

在你使用extendedKalmanFilter,unscentedKalmanFilterparticleFilter命令的在线非线性系统的状态估计,验证评估之前部署您的应用程序中的代码。如果验证表明低估计的信心,然后看到解决在线状态估计为下一个步骤。验证在线估计的结果之后,您可以生成C / c++代码或一个独立的应用程序使用MATLAB®编码器™MATLAB编译器™软件。

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

  • 获得输出数据从您的系统在不同的操作条件和输入值,以确保评估在所有操作条件下运行良好。例如,假设你想跟踪车辆的位置和速度使用嘈杂的位置测量。测量的数据在不同的车辆速度和缓慢而锋利的演习。

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

对于每一个场景,测试过滤器性能通过检查输出估计误差和状态估计误差。关于执行和验证在线状态估计的一个例子,看看非线性状态估计使用无味卡尔曼滤波和粒子滤波

检查输出估计误差

输出估计误差是测量输出之间的区别,y估计的输出,yEstimated。您可以获得估计输出在每个时间步使用测量系统的功能。例如,如果vdpMeasurementFcn.m是非线性系统的测量功能,您正在执行状态估计使用扩展卡尔曼滤波对象,obj,你可以使用当前状态估计计算估计的输出为:

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

在这里obj.State是状态值 x ^ ( k | k 1 ] 后估计美国使用预测命令。 x ^ ( k | k 1 ] 预测的状态预估时间k估计,使用测量输出,直到前一个时间k - 1

如果您使用的是extendedKalmanFilterunscentedKalmanFilter,您还可以使用剩余使估计误差:

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

估计错误(残差)必须有以下特点:

  • 小级小错误相对于输出增加信心的大小估计的值。

  • 零均值

  • 低的自相关,除了在零时间差计算自相关,您可以使用MATLABxcorr命令。

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

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

  • 小的大小

  • 零均值

  • 低的自相关,除了在零时间差

你也可以计算状态估计误差的协方差和比较中存储的状态估计误差协方差StateCovariance财产的过滤器。相似的价值观在过滤器的性能增加信心。

另请参阅

|||

相关的话题