主要内容

卡尔曼滤波器

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

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

    系统识别工具箱/估计器

  • 卡尔曼滤波块

描述

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

卡尔曼滤波器为连续或离散估计问题提供了最优解连续时间估计(系统识别工具箱)而且离散时间估计(系统识别工具箱)

卡尔曼滤波器块不同于卡尔曼可以通过以下方式执行命令:

  • 当你打电话时卡尔曼(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参数。

过程噪声与测量噪声的互协方差矩阵,指定为a西北——- - - - - -纽约矩阵。矩阵[Q N;NTR一定是正定的。

依赖关系

若要启用此端口,请取消选择定常N参数。

P初始时间的矩阵。

依赖关系

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

初始时间的估计状态。

依赖关系

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

此端口控制测量更新并接受标量信号。

依赖关系

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

使用指定的初始值重置估计状态和参数协方差矩阵的控制信号。看到外部复位(系统识别工具箱)有关何时触发重置的更多信息。

依赖关系

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

输出

全部展开

线性系统的估计状态。

线性系统的估计输出。

依赖关系

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

添加Z输出端口到块。

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

依赖关系

若要启用此端口,请设置时间域参数离散时间并选择使用电流测量y[n]来改进xhat[n]参数。

添加P输出端口到块。

若要启用此端口,请选择输出状态估计误差协方差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
类型:字符串,字符向量
价值观:“关闭”|“上”
默认值:“上”

将此参数指定为西北——- - - - - -纽约矩阵。矩阵[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来估计状态。换句话说,att,块执行时间更新,如果启用,复位后执行度量更新。该块输出这些更新的估算值。

指定以下其中之一:

  • 没有一个(默认)-估计状态 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