主要内容

卡尔曼滤波器

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

  • 库:
  • 控制系统工具箱/状态估计

    系统识别工具箱/估计器

  • 卡尔曼滤波块

描述

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

卡尔曼滤波器为连续或离散估计问题提供了最优解连续时间估计而且离散时间估计

卡尔曼滤波器块不同于卡尔曼(控制系统工具箱)可以通过以下方式执行命令:

  • 当你打电话时卡尔曼(sys,…),它假设sys包括G而且H矩阵。具体地说,sys。B形式是(B G)而且sys。D形式是[D H].类提供LTI变量时卡尔曼滤波器块,它不假设提供的LTI变量包含G而且H.它们是可选的和独立的。

  • 属性创建的筛选器卡尔曼命令输出[yhat; xhat]默认情况下。块只输出xhat默认情况下。

  • 卡尔曼命令可以同时输出P而且Z离散系统的协方差矩阵。该块只能输出PZ对于这样的系统。

限制

  • 植物和噪声数据必须满足以下约束条件:

    • 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

  • 连续时间卡尔曼滤波器不能用于函数调用子系统或触发子系统。

港口

输入

全部展开

已知输入u (t)u [k]

依赖关系

要启用此端口,请选择增加输入端口u参数。默认勾选。

测量输出y [n]更新估计的状态。

n——- - - - - -n状态(或系统)矩阵。

依赖关系

若要启用此端口,请设置源模型参数输入端口

n——- - - - - -p输入矩阵。

依赖关系

若要启用此端口,请设置源模型参数输入端口并选择增加输入端口u参数。

——- - - - - -p输出矩阵。

依赖关系

若要启用此端口,请设置源模型参数输入端口

——- - - - - -p馈通(或前馈)矩阵。在系统模型没有直接馈通的情况下,D是零矩阵。

依赖关系

若要启用此端口,请设置源模型参数输入端口并选择增加输入端口u参数。

状态空间方程中的噪声变换。

依赖关系

若要启用此端口,请选择使用G和H矩阵(默认G=I和H=0)参数。

状态空间方程中的噪声变换。

依赖关系

若要启用此端口,请选择使用G和H矩阵(默认G=I和H=0)参数。

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

  • 实非负标量。是一个西北——- - - - - -西北对角线上有标量的对角线矩阵。西北是模型中过程噪声输入的数量。

  • 实非负标量的向量。是一个西北——- - - - - -西北对角线矩阵与元素向量对角线上的

  • 西北——- - - - - -西北正半定矩阵。

依赖关系

如果要启用该端口,请取消选择定常问参数。

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

  • 实正标量。R是一个纽约——- - - - - -纽约对角线上有标量的对角线矩阵。纽约是模型中测量输出的数量。

  • 实正标量的向量。R是一个纽约——- - - - - -纽约对角线矩阵与元素向量对角线上的R

  • 纽约——- - - - - -纽约正定矩阵。

依赖关系

如果要启用该端口,请取消选择定常R参数。

过程和测量噪声的交叉协方差矩阵,指定为西北——- - - - - -纽约矩阵。矩阵[Q N;NTR必须是肯定的。

依赖关系

如果要启用该端口,请取消选择定常N参数。

P初始时刻的矩阵。

依赖关系

若要启用此端口,请设置源模型参数输入端口并设置参数输入端口

初始时刻的估计状态。

依赖关系

若要启用此端口,请设置参数输入端口

该端口控制测量更新并接收标量信号。

依赖关系

若要启用此端口,请选择增加输入端口使能控制测量更新参数。

控制信号,以重置估计状态和参数协方差矩阵使用指定的初始值。看到外部复位有关何时触发重置的详细信息。

依赖关系

若要启用此端口,请设置外部复位参数的值没有一个

输出

全部展开

线性系统的估计状态。

线性系统的估计输出。

依赖关系

若要启用此端口,请选择输出估计模型输出y参数。

添加Z输出端口到块。

若要启用此端口,请选择输出状态估计误差协方差Z参数。

依赖关系

若要启用此端口,请设置时间域参数离散时间并选择利用当前测量值y[n]改进xhat[n]参数。

添加P输出端口到块。

若要启用此端口,请选择输出状态估计误差协方差参数。

依赖关系

若要启用此端口,请设置时间域参数连续时间或设置时间域参数离散时间和取消选择利用当前测量值y[n]改进xhat[n]参数。

请注意

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

  • 启用而且重置端口支持int8uint8int16uint16int32uint32,布尔数据类型。

参数

全部展开

过滤器设置

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

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

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

编程使用

块参数:TimeDomain
类型:字符串,字符向量
价值观:“离散”|“连续时间”
默认值:“离散”

使用离散时间卡尔曼滤波器的电流估计变量。当未选择此参数时,将使用延迟估计器(变体)。

仅当时间域离散时间

编程使用

块参数:UseCurrentEstimator
类型:字符串,字符向量
价值观:“关闭”|“上”
默认值:“上”

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

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

依赖关系

仅当时间域离散时间而且源模型单独的A B C D矩阵输入端口.采样时间由LTI状态空间变量获得源模型状态空间变量

编程使用

块参数:Ts
类型:字符串,字符向量
价值观:“1”|标量
默认值:“1”

模型参数

系统模型
  • 状态空间变量—使用中指定的型号变量.默认值为党卫军(0.95,1 1 0).模型的采样时间必须匹配时间域参数;也就是说,模型必须是离散时间的,如果时间域是离散的。

  • 单独的A B C D矩阵—指定一个BC,D在块参数中。

  • 输入端口—指定一个BCD矩阵作为卡尔曼滤波器块的输入信号。如果选择此选项,则块包含其他输入端口一个BCD.您还必须指定状态数输入数量,输出数在块参数中。

编程使用

块参数:ModelSource
类型:字符串,字符向量
价值观:“LTI状态空间变量”|"单独的A, B, C, D矩阵"|“输入端口”
默认值:“LTI状态空间变量”

指定一个矩阵。它必须是真实的和方形的。默认值为0.95

依赖关系

若要启用此端口,请设置源模型参数单独的A B C D矩阵

编程使用

块参数:一个
类型:字符串,字符向量
价值观:“真正的矩阵”
默认值:“0.95”

指定B矩阵。它必须是实数并且行数与一个矩阵。默认值为1

依赖关系

若要启用此端口,请设置源模型参数单独的A B C D矩阵

编程使用

块参数:B
类型:字符串,字符向量
价值观:“真正的矩阵”
默认值:“1”

指定C矩阵。它必须是实数并且有和一个矩阵。默认值为1

依赖关系

若要启用此端口,请设置源模型参数单独的A B C D矩阵

编程使用

块参数:C
类型:字符串,字符向量
价值观:“真正的矩阵”
默认值:“1”

指定D矩阵。它必须是实数并且行数必须和C矩阵和相同多的列B矩阵。默认值为0

依赖关系

若要启用此端口,请设置源模型参数单独的A B C D矩阵

编程使用

块参数:D
类型:字符串,字符向量
价值观:“真正的矩阵”
默认值:“0”

要估计的状态数,指定为正整数。默认值为1

依赖关系

若要启用此端口,请设置源模型参数输入端口

编程使用

块参数:NumberOfStates
类型:字符串,字符向量
价值观:“1”|标量
默认值:“1”

模型中已知输入的数量,指定为正整数。默认值为1

依赖关系

若要启用此端口,请设置源模型参数输入端口

编程使用

块参数:NumberOfInputs
类型:字符串,字符向量
价值观:“1”|标量
默认值:“1”

模型中测量输出的数量,指定为正整数。默认值为1

依赖关系

若要启用此端口,请设置源模型参数输入端口

编程使用

块参数:NumberOfOutputs
类型:字符串,字符向量
价值观:“1”|标量
默认值:“1”
初步估计
  • 对话框—在对话框中直接指定。

  • 输入端口—从输入端口继承。默认为10.该块包括一个额外的输入端口X0.第二个额外的输入端口P0当使用时变卡尔曼滤波器时,则添加。X0而且P0必须满足与参数初始状态x[0]和状态估计误差协方差P[0]相同的条件。

编程使用

块参数:InitialEstimateSource
类型:字符串,字符向量
价值观:“对话框”|“输入端口”
默认值:“对话框”

将初始状态估计指定为实标量或向量。如果指定一个标量,则所有初始状态估计都将设置为该标量。如果指定了一个向量,那么向量的长度必须与模型中的状态数相匹配。默认为0

依赖关系

若要启用此端口,请设置参数对话框

编程使用

块参数:X0
类型:字符串,字符向量
价值观:“0”|标量|向量
默认值:“0”

为离散卡尔曼滤波器指定初始状态估计误差协方差P[0],为连续卡尔曼滤波器指定初始状态估计误差协方差P(0)。此参数必须指定为以下之一:

  • 实非负标量。P是一个Ns——- - - - - -Ns对角线上有标量的对角线矩阵。Ns是模型中的状态数。

  • 实非负标量的向量。P是一个Ns——- - - - - -Ns对角线矩阵与元素向量对角线上的P

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

依赖关系

若要启用此端口,请设置源模型参数输入端口而且参数对话框

编程使用

块参数:P0
类型:字符串,字符向量
价值观:“10”|标量|向量|矩阵
默认值:“10”
噪声特点

指定是否使用状态空间模型中预先识别的卡尔曼增益变量

依赖关系

启用该参数需要满足以下条件:

  • 源模型设置为状态空间变量而且变量是已标识的状态空间模型(中的难点)与非零K矩阵。

  • 选择时不变Q时不变R,时不变N参数。

  • 如果使用G和H矩阵(默认G=I和H=0)参数时,则时不变G而且时不变H还必须选择参数。

编程使用

块参数:UseK
类型:字符串,字符向量
价值观:“关闭”|“上”
默认值:“关闭”

默认情况下G =我而且H = 0.如果选择此选项,则必须指定G而且H参数。

编程使用

块参数:UseGH
类型:字符串,字符向量
价值观:“关闭”|“上”
默认值:“关闭”

它必须是一个行数和矩阵一样多的实矩阵一个矩阵。默认值为1

依赖关系

若要启用该参数,请选中使用G和H矩阵(默认G=I和H=0)参数。

编程使用

块参数:G
类型:字符串,字符向量
价值观:标量|向量|矩阵
默认值:“1”

如果取消选择此选项,则该块包含一个额外的输入端口G

编程使用

块参数:TimeInvariantG
类型:字符串,字符向量
价值观:“关闭”|“上”
默认值:“上”

它必须是一个行数和矩阵一样多的实矩阵C矩阵和相同多的列G矩阵。默认值为0

依赖关系

若要启用该参数,请选中使用G和H矩阵(默认G=I和H=0)参数。

编程使用

块参数:H
类型:字符串,字符向量
价值观:标量|向量|矩阵
默认值:“0”

如果取消选择此选项,则该块包含一个额外的输入端口H

编程使用

块参数:TimeInvariantH
类型:字符串,字符向量
价值观:“关闭”|“上”
默认值:“上”

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

依赖关系

仅当定常G而且定常H去掉的时候。否则,此信息将从GH矩阵。

编程使用

块参数:NumberOfProcessNoiseInputs
类型:字符串,字符向量
价值观:标量
默认值:“1”

指定的:指定为下列之一的:

  • 实非负标量。是一个西北——- - - - - -西北对角线上有标量的对角线矩阵。西北是模型中过程噪声输入的数量。

  • 实非负标量的向量。是一个西北——- - - - - -西北对角线矩阵与元素向量对角线上的

  • 西北——- - - - - -西北正半定矩阵。

依赖关系

要启用此参数,请选择定常问参数。

编程使用

块参数:
类型:字符串,字符向量
价值观:标量|向量|矩阵
默认值:“0.05”

如果取消选择该参数,则该块包含一个额外的输入端口

编程使用

块参数:TimeInvariantQ
类型:字符串,字符向量
价值观:“关闭”|“上”
默认值:“上”

指定的:指定为下列之一的:

  • 实正标量。R是一个纽约——- - - - - -纽约对角线上有标量的对角线矩阵。纽约是模型中测量输出的数量。

  • 实正标量的向量。R是一个纽约——- - - - - -纽约对角线矩阵与元素向量对角线上的R

  • 纽约——- - - - - -纽约正定矩阵。

依赖关系

要启用此参数,请选择定常R参数。

编程使用

块参数:R
类型:字符串,字符向量
价值观:标量|向量|矩阵
默认值:“1”

如果取消选择该参数,则该块包含一个额外的输入端口R

编程使用

块参数:TimeInvariantR
类型:字符串,字符向量
价值观:“关闭”|“上”
默认值:“上”

指定此参数为a西北——- - - - - -纽约矩阵。矩阵[Q N;NTR必须是肯定的。

依赖关系

要启用此参数,请选择定常N参数。

编程使用

块参数:N
类型:字符串,字符向量
价值观:标量|向量|矩阵
默认值:“0”

如果取消选择该参数,则该块包含一个额外的输入端口N

编程使用

块参数:TimeInvariantN
类型:字符串,字符向量
价值观:“关闭”|“上”
默认值:“上”

选项

额外的港口

如果您的模型包含已知输入,则选择此选项u (t)u [k].该参数默认为选中。取消选择该参数将删除输入端口u,并删除BD而且输入数量块对话框中的参数。

编程使用

块参数:AddInputPort
类型:字符串,字符向量
价值观:“关闭”|“上”
默认值:“上”

如果要控制度量更新,请选择此选项。该块包括一个额外的导入启用.的启用输入端口接受标量信号。默认不勾选。

默认情况下,块在每个时间步骤进行测量更新,以改进状态和输出估计 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 离散时间。

请注意

使启用端口允许控制测量更新。默认情况下,卡尔曼滤波器进行测量更新。

编程使用

块参数:AddEnablePort
类型:字符串,字符向量
价值观:“关闭”|“上”
默认值:“关闭”

该参数帮助控制何时重置块。假设你在某个时间步重设这个块,t.如果块在t时,软件使用块对话框或输入端口中指定的初始参数值P0而且X0来估计状态。换句话说,在t,该块执行时间更新,如果启用,则在重置后进行测量更新。该块输出这些更新的估计。

指定下列之一:

  • 没有一个(默认)-估计状态 x 和状态估计误差协方差矩阵P不重置值。

  • 不断上升的—当控制信号从负值或零值上升到正值时触发复位。如果初始值为负,上升到零将触发重置。

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

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

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

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

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

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

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

编程使用

块参数:ExternalReset
类型:字符串,字符向量
价值观:“没有”|“上升”|“下降”|“不是”|“水平”|“持有”
默认值:“没有”
额外的输出港

添加一个 y 输出端口到块,以输出估计的模型输出。默认不选择。

编程使用

块参数:OutputEstimatedY
类型:字符串,字符向量
价值观:“关闭”|“上”
默认值:“关闭”

添加一个Z输出端口到块。的Z仅当时间域离散时间利用当前测量值y[n]改进xhat[n]参数选中。否则,P矩阵中所描述的算法节提供。

默认不勾选。

编程使用

块参数:OutputZ
类型:字符串,字符向量
价值观:“关闭”|“上”
默认值:“关闭”

添加一个P输出端口到块。默认不勾选。

依赖关系

若要启用此端口,请设置时间域参数连续时间或设置时间域参数离散时间和取消选择利用当前测量值y[n]改进xhat[n]参数。

编程使用

块参数:OutputP
类型:字符串,字符向量
价值观:“关闭”|“上”
默认值:“关闭”

算法

全部展开

参考文献

[1]富兰克林,吉恩F, J.大卫鲍威尔,迈克尔L.沃克曼。动态系统的数字控制“,.第二版。Reading, Mass: Addison-Wesley, 1990。

[2]刘易斯,弗兰克L。最优估计:随机控制理论导论.纽约:Wiley出版社,1986年。

扩展功能

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

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

版本历史

在R2014b中引入

全部展开

Baidu
map