主要内容

卡尔曼滤波器

估计离散时间或连续时间线性系统的状态

描述

使用卡尔曼滤波器块估计状态空间植物模型给定的过程和测量噪声协方差数据。状态空间模型可以是时变的。如果状态空间模型和噪声协方差矩阵都是时不变的,则使用稳态卡尔曼滤波实现。否则采用时变卡尔曼滤波器。

卡尔曼滤波为以下连续或离散估计问题提供了最优解:

连续时间估计

离散时间估计

卡尔曼滤波器块不同于卡尔曼命令格式如下:

  • 呼叫时卡尔曼(sys,…)sys包括GH矩阵。具体地说,sys。B.[b g]sys。D.[D H].的LTI变量卡尔曼滤波器块,它不假设提供的LTI变量包含GH.它们是可选的和独立的。

  • 卡尔曼命令输出[yhat; xhat]默认情况下。仅输出块xhat默认情况下。

  • 卡尔曼滤波块

参数

下表总结了Kalman筛选块参数,可通过“块参数”对话框访问。

任务 参数
指定过滤器设置
指定系统模型

模型来源模型参数选项卡

指定初始状态估计

模型参数选项卡

指定噪声特征

模型参数标签:

指定附加的港口

选项标签:

指定附加外港

选项标签:

时间域

指定是估计连续时间状态还是离散时间状态:

  • 离散时间默认的) -块估计离散时间状态

  • 连续时间- 块估计连续时间状态

    卡尔曼滤波器块在具有同步状态控制的模型中(请参阅国家控制(HDL编码器)块),您不能选择连续时间

使用当前测量y[n]改进xhat[n]

使用离散时间卡尔曼滤波器的电流估计变量。如果没有选择,则使用延迟估计量(变体)。

此选项仅在以下情况下可用时域离散时间

模型来源

指定A, B, C, D矩阵是如何提供给块的。必须是下列情况之一:

  • 对话框:LTI状态空间变量—使用LTI状态空间变量中指定的值。中还必须指定变量名变量.模型的采样时间必须与时间域选项,即模型必须是离散时间的时间域是离散的。

  • 对话:单个的A, B, C, D矩阵—设置以下块参数:

    • 一种—指定A矩阵。它必须是实数和方的。

    • B.—指定B矩阵。它必须是实数并且和A矩阵的行数一样多。此选项仅在以下情况下可用添加输入端口u选项选项卡。

    • C- 指定C矩阵。它必须是真实的,并且具有尽可能多的列作为矩阵。

    • D.—指定D矩阵。它必须是真实的。它必须有和C矩阵一样多的行和和B矩阵一样多的列。此选项仅在以下情况下可用添加输入端口u选项选项卡。

  • 外部的-指定A, B, C, D矩阵作为卡尔曼滤波块的输入信号。如果选择此选项,则块包含额外的输入端口A、B、C和d。您还必须在块参数中指定以下参数:

    • 许多州- 要估计的状态数量,指定为正整数。缺省值是2。

    • 输入数量-模型中已知输入的个数,指定为正整数。缺省值是2。此选项仅在以下情况下可用添加输入端口u被选中。

    • 数量的输出—模型中测量输出的数量,指定为正整数。缺省值是2。

样品时间

块采样时间,指定为-1或正标量。

此选项仅在以下情况下可用时域离散时间源模型对话:单个的A, B, C, D矩阵外部的.如果模型源为,则样本时间由LTI状态空间变量获得对话框:LTI状态空间变量

默认值是-1,这意味着该块基于模型中的块的上下文继承它的样本时间。所有块输入端口必须具有相同的采样时间。

指定如何输入初始状态估计和初始状态估计误差协方差:

  • 对话- 直接在对话框中指定值。您还必须指定以下参数:

    • 初始状态x [0]- 将初始状态估计指定为实际标量或向量。如果指定标量,则将所有初始状态估计设置为此标量。如果指定了向量,则要将矢量的长度必须与模型中的状态数匹配。

    • 状态估计误差协方差P[0](仅当使用时变卡尔曼滤波器时)-离散卡尔曼滤波器的初始状态估计误差协方差为P[0],连续卡尔曼滤波器的初始状态估计误差协方差为P(0)。必须指定为下列之一:

      • 真正的负的标量。P是一个ns × ns的对角矩阵在对角线上有标量。Ns是模型中的状态数。

      • 实非负标量的向量。P是一个ns × ns的对角矩阵其中的元素是P对角线上的向量。

      • ns-by-ns正半定矩阵。

  • 外部的- 继承来自输入端口的值。该块包括附加输入端口X0。当使用时变的Kalman滤波器时,添加第二附加输入端口P0。X0和P0必须满足先前在对话框中指定它们时描述的相同条件。

使用来自模型变量的Kalman Gain k

指定是否使用状态空间工厂模型中包含的预先确定的卡尔曼增益。此选项仅适用于:

  • 源模型对话框:LTI状态空间变量变量是已标识的状态空间模型(IDS.(系统辨识工具箱))的非零K矩阵。

  • 时间不变Q.时间不变r.时间不变的n选项被选中。

如果是使用G和H矩阵(默认G=I和H=0)选项选中,时间不变g时间不变H.还必须选择选项。

使用G和H矩阵(默认G=I和H=0)

指定是否为G和H矩阵使用非默认值。如果选择此选项,必须指定:

  • G—指定G矩阵。它必须是一个和a矩阵一样多的实矩阵。默认值为1。

  • 定常G- 指定G矩阵是否是时间不变。如果取消选择此选项,则该块包括另一个输入端口G.

  • H- 指定H矩阵。它必须是一个具有与C矩阵一样多行的真实矩阵,并且与G矩阵一样多列。默认值为0。

  • 定常H- 指定H矩阵是否是时间不变。如果取消选择此选项,则该块包括另一个输入端口G.

  • 过程噪声输入的数量—指定模型中进程噪声输入的数量。默认值为1。

    此选项仅在以下情况下可用定常G定常H被清除。否则,这个信息是从G或H矩阵推断出来的。

问:

过程噪声协方差矩阵,指定为以下之一:

  • 真正的负的标量。Q是一个nw × nw的对角线矩阵,对角线上有标量。Nw为模型中的过程噪声输入数。

  • 实非负标量的向量。Q是一个nw - nw对角线矩阵,其中向量的元素在Q对角线上。

  • Nw-by-Nw正半定矩阵。

时间不变Q.

指定Q矩阵是否时不变。如果取消选择该选项,则块包含一个额外的输入端口Q。

R.

测量噪声协方差矩阵,指定为如下之一:

  • 真正积极的标量。R是一个ny × ny的对角矩阵在对角线上有标量。Ny为模型中测量输出的数量。

  • 真正的正面标渣传染媒介。R是NY-BY-NY对角线矩阵,其中R的向量元素R.

  • NY-BY-NY积极的矩阵。

时间不变r.

指定R矩阵是否是时间不变。如果取消选择此选项,则该块包括其他输入端口R.

N.

处理和测量噪声交叉协方差矩阵。指定它为一个nw × ny矩阵。矩阵[Q N;N.T.必须是正定的。

时间不变的n

指定N矩阵是否时不变。如果取消选择该选项,则块包含一个额外的输入端口N。

添加输入端口u

如果模型包含已知输入,请选择此选项u (t)u [k].该选项默认被选中。取消此选项将删除输入端口从块中移除B.D.输入数量块对话框中的参数。

添加输入端口使能控制测量更新

如果您想控制测量更新,请选择此选项。该块包含一个额外的导入启用.这启用输入端口接受标量信号。默认情况下,此选项将被清除。

默认情况下,块在每个时间步骤进行测量更新,以改进状态和输出估计 X ^ y ^ 基于测量输出。当使能端口的信号为0时,跳过当前采样时间的测量更新。具体地说,状态估计方程变成 X ^ ˙ T. 的) = 一种 T. 的) X ^ T. 的) + B. T. 的) T. 的) 为连续时间卡尔曼滤波器 X ^ [ N. + 1 | N. ] = 一种 [ N. ] X ^ [ N. | N. 1 ] + B. [ N. ] [ N. ] 离散时间。

外部复位

选择重置估计状态和参数协方差矩阵使用指定的初始值。

假设你按时间步重设方块,T..如果块在T.,软件使用在块对话框或输入端口P0和X0中指定的初始参数值来估计状态。换句话说,atT.时,块执行时间更新,如果启用,则在复位后执行测量更新。区块输出这些更新的估计。

指定以下内容之一:

  • 没有一个(默认)-估计状态 X ^ 并且状态估计误差协方差矩阵P值未重置。

  • 升起- 当控制信号从负或零值升高到正值时,触发复位。如果初始值为否定,则上升到零触发复位。

  • 落下- 当控制信号从正或零值下降到负值时,触发复位。如果初始值为正,则跌至零触发重置。

  • 要么- 当控制信号要么上升或下降时,会触发复位。

  • 水平-在这两种情况下触发重置:

    • 控制信号在当前时间步长非零。

    • 控制信号由上一个时间步长的非零变为当前时间步长的零。

  • 水平持有当控制信号在当前时间步长非零时触发复位。

当你选择一个不是没有一个,一个重置将输入端口添加到块中以提供复位控制输入信号。

输出估计模型输出y

添加 y ^ 输出端口到块输出估计的模型输出。默认情况下清除该选项。

输出状态估计误差协方差P或Z

在块上增加P输出口或Z输出口。Z矩阵仅当时域离散时间使用当前测量y[n]改进xhat[n]被选中。否则,P矩阵,如描述节,提供。

默认情况下清除该选项。

港口

端口名称

端口类型

(进/出)

描述
u(可选) 已知的输入,指定为实标量或实向量。
y 测量输出,指定为真正的标量或向量。
xhat 作为实标量或向量返回的估计状态。
yhat(可选) 作为实标量或向量返回的估计输出。
p或z(可选) 状态估计误差协方差,以矩阵形式返回。
(可选) 一个矩阵,指定为实矩阵。
b(可选) 矩阵B,指定为实矩阵。
C(可选) C矩阵,指定为实矩阵。
D(可选) D矩阵,指定为实矩阵。
g(可选) G矩阵,指定为实矩阵。
H(可选) H矩阵,指定为真实矩阵。
q(可选) Q矩阵,指定为实标量、向量或矩阵。
R(可选) R矩阵,指定为实标量、向量或矩阵。
n(可选) N矩阵,指定为实矩阵。
P0(可选) 初始时刻的P矩阵,指定为实标量、向量或矩阵。
X0(可选) 初始状态估计,指定为实标量或实向量。
使(可选) 控制信号,使测量更新,指定为真实标量。
重置(可选) 用于重置状态估计的控制信号,指定为实标量。

金宝app支持的数据类型

  • 双精度浮点

  • 单精度浮点(仅用于离散时间卡尔曼滤波器)

笔记

  • 所有输入端口除启用重置必须具有相同的数据类型(单或双)。

  • 启用重置端口支持金宝appint8uint8int16uint16int32uint32,布尔数据类型。

限制

  • 工厂和噪声数据必须满足:

    • C一种)可检测

    • R. ¯ > 0. 问: ¯ N. ¯ R. ¯ 1 N. ¯ T. 0.

    • 一种 N. ¯ R. ¯ 1 C 问: ¯ N. ¯ R. ¯ 1 N. ¯ T. 的) 在虚轴(或离散时间单位圆)上没有不可控制的模式,符号是

      问: ¯ = G 问: G T. R. ¯ = R. + H N. + N. T. H T. + H 问: H T. N. ¯ = G 问: H T. + N. 的)

  • 连续时间卡尔曼滤波器不能在函数调用子系统和触发子系统中使用。

兼容性的考虑

全部展开

行为在R2021a中改变

参考文献

[1]富兰克林,G.F.,J.D. Powell和M.L.工人,动态系统的数字控制,第二版,Addison-Wesley, 1990。

[2]刘易斯,F。,最佳估计,John Wiley&Sons,Inc,1986年。

扩展功能

C / c++代码生成
使用Simulink®Coder™生成C和c++代码。金宝app

PLC代码生成
使用Simulink®PLC Coder™生成结构化文本代码。金宝app

介绍了R2014b