使用后扩展的卡尔曼过滤器,,,,无味的卡尔曼过滤器或者粒子过滤器用于在线状态估算非线性系统的块,在将代码部署在应用程序中之前验证估计。如果验证表明对估计的信心较低,请参见故障排除在线状态估计对于下一步。验证在线估计结果后,您可以使用该块生成C/C ++代码金宝app®CODER™软件。
为了验证过滤器的性能,请使用这些方案中测量或模拟的输出数据执行状态估计。
在不同的操作条件和输入值下从系统中获取输出数据 - 以确保在所有感兴趣的操作条件下估算均能很好地工作。例如,假设您想使用嘈杂的位置测量值跟踪车辆的位置和速度。以不同的车辆速度测量数据,并缓慢而锋利的操作。
对于每个感兴趣的操作条件,获得具有不同噪声实现的多组实验或模拟数据,以确保不同的噪声值不会恶化估计性性能。
对于每种情况,请检查残差和状态估计误差来测试过滤器性能。
残差或输出估计误差是测量系统输出之间的差异ymeased [k]
,以及估计的系统输出y prepifted [k | k-1]
在时间步骤k
。这里,y prepifted [k | k-1]
是时间步长的估计输出k
,该预测使用输出测量直到时间步长K-1
。
这些块不会明确输出y prepifted [k | k-1]
但是,您可以使用估计的状态值以及您的状态过渡和测量功能来计算输出。例如,请参阅计算残差和状态估计错误。
残差必须具有以下特征:
小幅度 - 相对于输出大小的小误差增加了对估计值的置信度。
零平均值
低自相关,除了零时间滞后 - 要计算自相关,您可以使用自相关(DSP系统工具箱)从DSP System Toolbox™软件块。
当您模拟非线性系统的输出数据并使用该数据进行状态估计时,您就会知道真实状态值。您可以计算估计和真实状态值之间的错误并分析错误。在任何时间步骤中的估计状态值在xhat块的端口。国家估计错误必须满足以下特征:
小幅度
零平均值
低自相关,除了零时间滞后
您还可以计算状态估计误差的协方差,并将其与状态估计误差协方差进行比较,该协方差协方差由块中的块输出p块的端口。相似的值会增加对过滤器性能的信心。
此示例显示了如何估计离散时间范围驱动器的状态,并计算状态估计误差和残差以验证估计。残差是输出估计误差,即它们是测量和估计输出之间的差异。
在Simuli金宝appnk™模型中VDPStateStemModel
,Van der Pol振荡器块用非线性参数MU,等于1的非线性参数实现振荡器。振荡器具有两个状态。对第一状态的嘈杂测量x1
可用。
该模型使用无气味的卡尔曼过滤器块来估计振荡器的状态。由于该块需要离散的时间输入,因此速率转换块样本x1
给出离散的输出测量ymeased [k]
在时间步骤k
。无气味的卡尔曼过滤器块输出估计的状态值xhat [k | k]
在时间步骤k
, 使用ymeased
直到时间k
。过滤器块使用先前写入和保存的状态过渡和测量功能,vdpstatefcn.m
和vdpmeasurementfcn.m
。有关这些功能的信息,请参阅非线性状态估计使用无味的卡尔曼滤波器和粒子过滤器。
为了验证状态估计,该模型计算生成残差块中的残差。另外,由于已知真实状态值,该模型还计算状态估计错误。
要计算残差,生成残差块首先计算估计的输出y prepifted [k | k-1]
使用估计的状态以及状态过渡和测量函数。这里,y prepifted [k | k-1]
是时间步长的估计输出k
,使用输出测量进行预测直到时间步长K-1
。然后,块在时间步骤中计算残差k
作为ymeased [k]
-y prepifted [k | k-1]
。
检查残差和状态估计误差,并确保它们的幅度较小,均值零和低自相关。
在此示例中,无声的卡尔曼过滤器块输出xhat [k | k]
因为使用当前的测量来改善状态估计选择块的参数。如果清除此参数,则块将输出xhat [k | k-1]
,时间步长的预测状态价值k
, 使用ymeased
直到时间K-1
。在这种情况下,计算y prepiDed [k | k-1] = measurementfcn(xhat [k | k-1])
, 在哪里测量FCN
是系统的测量功能。
卡尔曼过滤器|扩展的卡尔曼过滤器|无味的卡尔曼过滤器|粒子过滤器