主要内容

卡尔曼滤波器

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

描述

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

卡尔曼滤波器为以下连续或离散估计问题提供最佳解决方案:

连续时间估计

离散时间估计

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

  • 当调用卡尔曼(系统,…)sys包括GH矩阵。具体地说,系统B(B G)系统D[D H].的LTI变量卡尔曼滤波器块,它不假定提供的LTI变量包含GH。它们是可选的和独立的。

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

  • 卡尔曼滤波块

参数

下表总结了卡尔曼滤波块参数,可通过块参数对话框访问。

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

源模型模型参数标签

指定初始状态估计

来源模型参数标签

指定噪声特征

模型参数选项卡:

指定附加的港口

选项选项卡:

指定其他输出

选项选项卡:

时间域

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

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

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

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

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

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

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

源模型

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

  • 对话框:LTI状态空间变量—使用LTI状态空间变量中指定的值。中还必须指定变量名变量这个sample time of the model must match the setting in the时间域选项,即模型必须是离散时间的时间域是离散的。

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

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

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

    • C—指定C矩阵。它必须是实数并且和A矩阵一样多。

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

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

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

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

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

样品时间

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

此选项仅在以下情况下可用时间域离散时间源模型对话:单个的A, B, C, D矩阵外部这个sample time is obtained from the LTI state-space variable if the Model Source is对话框:LTI状态空间变量

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

来源

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

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

    • 初始状态x [0]-指定初始状态估计为实标量或矢量。如果指定一个标量,则所有初始状态估计都设置为这个标量。如果指定一个向量,那么向量的长度必须与模型中的状态数匹配。

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

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

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

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

  • 外部—继承输入端口的值。该块包括一个额外的输入端口X0。采用时变卡尔曼滤波器时,增加了一个附加的输入端口P0。当您在对话框中指定X0和P0时,它们必须满足前面描述的相同条件。

利用模型变量的卡尔曼增益K

指定是否使用包含在状态空间植物模型中的预先识别的卡尔曼增益。此选项仅在以下情况下有效:

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

  • 时不变问时不变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。

R

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

  • 实正标量。R是一个Ny乘Ny的对角矩阵,其标量位于对角线上。Ny是模型中测量输出的数量。

  • 实正标量的向量。R是一个ny × ny的对角线矩阵包含了向量在R对角线上的元素。

  • Ny-by-Ny正定矩阵。

时不变R

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

N

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

时不变N

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

添加输入端口u

如果模型包含已知输入,请选择此选项u(t)u [k]这个option is selected by default. Unselecting this option removes the input portu从块中删除并删除BD输入数量块对话框中的参数。

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

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

默认情况下,块在每个时间步骤进行测量更新,以改进状态和输出估计 x y 基于测量的输出。当启用端口中的信号为0时,将跳过当前采样时间的测量更新。具体地说,状态估计方程变得 x ˙ t 一个 t x t + B t u t 连续时间卡尔曼滤波及其应用 x n + 1 | n 一个 n x n | n 1 + B n u 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(可选) 出来 状态估计误差协方差,以矩阵形式返回。
A(可选) 一个矩阵,指定为实矩阵。
B(可选) 矩阵B,指定为实矩阵。
C(可选) C矩阵,指定为实矩阵。
D(可选) D矩阵,指定为实矩阵。
G(可选) G矩阵,指定为实矩阵。
H(可选) H矩阵,指定为实矩阵。
问(可选) Q矩阵,指定为实标量、向量或矩阵。
R(可选) R矩阵,指定为实标量、向量或矩阵。
N(可选) N矩阵,指定为实矩阵。
P0(可选) 初始时刻的P矩阵,指定为实标量、向量或矩阵。
X0(可选) 初始状态估计,指定为实标量或向量。
启用(可选) 控制信号,使测量更新,指定为真实标量。
重置(可选) 用于重置状态估计的控制信号,指定为实标量。

金宝app支持的数据类型

  • 双精度浮点

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

请注意

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

  • 启用重置端口支持金宝app双重的int8uint8int16uint16int32uint32,布尔数据类型。

限制

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

    • 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.鲍威尔和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