主要内容

扩展卡尔曼筛选器

离散时间非线性系统状态估计的扩展卡尔曼滤波器

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

    系统识别工具箱/评估器

  • ekf_block.

描述

扩展卡尔曼筛选器块估计离散时间非线性系统的状态,采用一阶离散时间扩展卡尔曼滤波算法。

考虑一个州的植物x、输入u、输出y,过程噪声w,测量噪声v.假设你可以将植物表示为一个非线性系统。

使用系统的状态转换和测量功能和扩展的卡尔曼滤波算法,块产生状态估计 x 当前时间步长。有关算法的信息,请参见扩展和Unstented Kalman滤波器算法用于在线状态估计

您可以为系统创建非线性状态转换功能和测量功能,并在块中指定这些函数。该块支持具有以不同采金宝app样率运行的多个传感器的系统的状态估计。您可以指定多达五种测量功能,每一种对应于系统中的一个传感器。您还可以指定状态转换和测量功能的jacobians。如果未指定它们,则软件数值计算雅可比人。有关更多信息,请参阅状态转换和测量功能

港口

输入

全部展开

测量系统输出对应于在块中指定的每个测量函数。端口数量等于系统中的测量函数的数量。您可以指定多达五个测量功能。例如,如果您的系统有两个传感器,则在块中指定两个测量功能。第一个港口日元默认为可用。当你点击应用时,软件生成端口y2对应于第二测量功能。

指定端口为N维向量,N为相应传感器测量的数量。例如,如果你的系统有一个传感器来测量物体的位置和速度,那么就只有一个端口日元.该端口被指定为二维向量,其中值对应于位置和速度。

依赖关系

第一个港口日元默认为可用。港口y2日元是当你点击添加测量,然后单击应用

数据类型:|

状态转换函数的附加可选输入参数f除了国家x和过程噪声w.有关状态转换函数的信息,请参阅状态转换和测量功能

假设你的系统有非加性过程噪声和状态转移函数f有以下形式:

x(k + 1)= f(x(k),w(k),statefranitionfcninputs)

在这里k是时间步长,和StateTransitionFcnInputs是除此之外的额外输入论点xw

如果您创建f使用MATLAB®功能 (.米文件),软件生成端口StateTransitionFcnInputs当你点击应用.您可以将此端口的输入指定为标量、向量或矩阵。

如果状态转移函数有多个额外的输入,请使用金宝app仿真软件的功能(金宝app模型)块指定函数。当你使用的时候金宝app仿真软件的功能块,则直接向金宝app仿真软件的功能块使用inport.(金宝app模型)块。的附加输入不生成输入端口扩展卡尔曼筛选器块。

依赖关系

仅当满足以下两个条件时才生成此端口:

  • 你指定f功能使用MATLAB功能,和f是在MATLAB路径上。

  • f只需要一个额外的输入参数xw

数据类型:|

除了状态外,测量功能的其他可选输入x和测量噪声v.有关测量功能的信息,请参阅状态转换和测量功能

MeasurementFcn1Inputs对应于您指定的第一个测量功能等。例如,假设您的系统有三个传感器和非吸收测量噪声,以及三个测量功能h1h2, 和h3有以下形式:

Y1 [K] = H1(X [K],V1 [K],MeasurementFCN1Inputs)

y2 [k] = h2 (x [k], v2 [k], MeasurementFcn2Inputs)

y3 [k] = h3 (x [k], v3 [k])

在这里k是时间步长,和MeasurementFcn1InputsMeasurementFcn2Inputs附加的输入参数是h1h2

如果您指定h1h2, 和h3使用MATLAB函数(.米文件)在功能时,软件生成端口MeasurementFcn1InputsMeasurementFcn2Inputs当你点击应用.您可以将这些端口的输入指定为标量,向量或矩阵。

如果测量函数有不止一个额外的输入,请使用金宝app仿真软件的功能(金宝app模型)块来指定函数。当你使用的时候金宝app仿真软件的功能块,则直接向金宝app仿真软件的功能块使用inport.(金宝app模型)块。的附加输入不生成输入端口扩展卡尔曼筛选器块。

依赖关系

对应于测量功能的端口h只有满足以下两个条件时才生成:

  • 你指定h功能使用MATLAB功能,和h是在MATLAB路径上。

  • h只需要一个额外的输入参数xv

数据类型:|

时变过程噪声协方差,指定为标量、矢量或矩阵,取决于的值过程噪声参数:

  • 过程噪声添加剂- 将协议性指定为标量ns.元素向量,或ns.——- - - - - -ns.矩阵,其中ns.是系统的状态数。如果过程噪声术语之间没有互相关,则指定标量,并且所有术语都具有相同的方差。指定一个长度的向量ns.,如果过程噪声项之间没有相互关联,但所有的项有不同的方差。

  • 过程噪声非相加—指定协方差为aW——- - - - - -W矩阵,其中W为状态转移函数中过程噪声项的个数。

依赖关系

如果您指定过程噪声协方差,则会生成此端口时变.单击时,端口会出现应用

数据类型:|

系统中多达五个测量函数的时变测量噪声协方差,以矩阵形式指定。矩阵的大小取决于测量噪声参数对应的测量功能:

  • 测量噪声添加剂- 指定协方差作为N——- - - - - -N矩阵,其中N是系统的测量数。

  • 测量噪声非相加—指定协方差为aV——- - - - - -V矩阵,其中V为相应测量函数中测量噪声项的个数。

依赖关系

如果您指定测量噪声协方差,则会生成端口时变对于相应的测量功能。单击时,端口会出现应用

数据类型:|

假设测量的输出数据在港口的所有时间点都不可用日元这对应于第一个测量函数。使用除此之外的信号值0启用1.当测量数据可用时,允许修正估计状态的端口。指定端口值为0测量数据时不可用。同样,如果在端口的所有时间点都不提供测量的输出数据y为了th测量功能,指定相应的端口启用作为一种价值0

依赖关系

如果选择,会生成与测量功能对应的端口添加启用端口对于该测量功能。单击时,端口会出现应用

数据类型:||布尔

输出

全部展开

估计状态,返回为大小向量ns.,在那里ns.是系统的状态数。要访问个人状态,请使用选择器(金宝app模型)块。

使用当前度量来改进状态估计参数被选中,块输出纠正的状态估计值 x k | k 在时间步k,使用测量输出直到时间k.如果清除此参数,该块将返回预测的状态估计 x k | k - 1 时间k,使用前一时间的测量输出进行估计k - 1.如果筛选器处于反馈循环中,请清除此参数,并且在Simulink中有一个代数循环金宝app®模型。

数据类型:|

状态估计错误协方差,作为一个返回ns.——- - - - - -ns.矩阵,其中ns.是系统的状态数。要访问单个协方差,请使用选择器(金宝app模型)块。

依赖关系

如果选择,则生成该端口输出状态估计误差协方差在里面系统模型选项卡,然后单击应用

数据类型:|

参数

全部展开

系统模型选项卡

状态转换

状态转换功能计算ns.- 时间步骤中系统的状态向量k+1,给定时间步长的状态向量kns.为非线性系统的状态数。中创建状态转换函数并指定函数名功能.例如,如果vdpstatefcn.m.您创建并保存的状态转换函数是否指定功能作为vdpStateFcn

您创建的函数的输入取决于您是将流程噪声指定为加性的还是非加性的过程噪声

  • 过程噪声添加剂—状态转移函数f指定状态如何演化为状态值在前一个时间步骤的函数:

    x (k + 1) = f (x (k), Us1 (k),…,Usn (k))

    在哪里x(k)估计的状态是在时间k, 和Us1,…,Usn是状态转换功能所需的任何额外输入参数,例如系统输入或采样时间。查看具有添加过程噪声的状态转换功能的示例,键入编辑vdpstatefcn.在命令行。

  • 过程噪声非相加-状态转移函数还指定状态如何演化为过程噪声的函数w

    x (k + 1) = f (x (k), w (k), Us1 (k),…,Usn (k))

有关更多信息,请参阅状态转换和测量功能

您可以创建f使用一个金宝app仿真软件的功能(金宝app模型)块或作为MATLAB函数(.米文件)。

  • 您可以使用MATLAB函数,只有当f是否有一个额外的输入参数Us1除了xw

    x (k + 1) = f (x (k), w (k), Us1 (k))

    该软件生成一个额外的输入端口StateTransitionFcnInputs指定此参数。

  • 如果您使用的是金宝app仿真软件的功能块,指定xw使用参数尺寸。(金宝app模型)块和额外的输入Us1,…,Usn使用inport.(金宝app模型)街区在金宝app仿真软件的功能块。你不提供Us1,…,Usn到了扩展卡尔曼筛选器块。

编程使用

块参数:StateTransitionFcn
类型:特征向量,字符串
默认值:'mystatetransitionfcn'

状态转移函数的雅可比矩阵f,指定为下列其中之一:

  • 离开-软件计算雅可比矩阵的数值。这种计算可能会增加状态估计的处理时间和数值误差。

  • —创建计算雅可比矩阵的函数,并指定函数名雅可比矩阵.例如,如果vdpstatejacobianfcn.m.是雅可比函数,指定雅可比矩阵作为vdpstatejacobianfcn..如果你创建了状态转移函数f使用一个金宝app仿真软件的功能(金宝app模型)块,然后使用a创建雅加诺斯金宝app仿真软件的功能块。如果您创建f使用MATLAB函数(.米文件),然后使用MATLAB函数创建雅可比矩阵。

    该函数计算状态转移函数对状态和过程噪声的偏导数。雅可比函数的输入数必须等于状态转移函数的输入数并且在两个函数中必须以相同的顺序指定。雅可比函数的输出数取决于过程噪声参数:

    • 过程噪声添加剂-函数计算状态转移函数的偏导数f就各州而言( f / x ).输出是ns.——- - - - - -ns.雅可比矩阵,ns.是状态数。

      要查看加性过程噪声的雅可比函数的示例,请键入编辑vdpStateJacobianFcn在命令行。

    • 过程噪声非相加-该函数还必须返回第二个输出,该输出是状态转移函数的偏导数f关于过程噪声项( f / w ).第二个输出作为ns.——- - - - - -W矩阵,其中W为状态转移函数中过程噪声项的个数。

编程使用

块参数:HasStateTransitionJacobianFcn
类型:特征向量
价值观:“关闭”“上”
默认值:“关闭”
块参数:StateTransitionJacobianFcn
类型:特征向量,字符串
默认值:

过程噪声特性,指定为下列值之一:

  • 添加剂- 过程噪声w是添加剂,以及状态转换功能f你在功能有以下形式:

    x (k + 1) = f (x (k), Us1 (k),…,Usn (k))

    在哪里x(k)估计的状态是在时间k, 和Us1,…,Usn状态转换函数是否需要任何额外的输入参数。

  • 非相加—过程噪声是非可加性的,状态转移函数指定状态如何作为状态的函数演化处理前一时间步噪声:

    x (k + 1) = f (x (k), w (k), Us1 (k),…,Usn (k))

编程使用

块参数:HasAdditiveProcessNoise
类型:特征向量
价值观:“添加剂”“非相加”
默认值:“添加剂”

的值指定为标量、矢量或矩阵的时不变过程噪声协方差过程噪声参数:

  • 过程噪声添加剂- 将协议性指定为标量ns.元素向量,或ns.——- - - - - -ns.矩阵,其中ns.是系统的状态数。如果过程噪声项之间没有相互关联且所有项的方差相同,则指定一个标量。指定一个长度的向量ns.,如果过程噪声术语之间没有互相关,但所有术语都具有不同的差异。

  • 过程噪声非相加—指定协方差为aW——- - - - - -W矩阵,其中W为过程噪声项的个数。

如果过程噪声协方差是时变的,选择时变.块生成输入端口来指定时变协方差。

依赖关系

如果您未指定进程噪声,则启用此参数时变

编程使用

块参数:processnoise.
类型:特征向量,字符串
默认值:' 1 '

如果选择此参数,则块包含一个额外的输入端口指定时变过程噪声协方差。

编程使用

块参数:HasTimeVaryingProcessNoise
类型:特征向量
价值观:“关闭”“上”
默认值:“关闭”
初始化

初始状态估计值,指定为ns.元向量,ns.是系统中的状态数量。根据您对系统的知识指定初始状态值。

编程使用

块参数:InitialState
类型:特征向量,字符串
默认值:' 0 '

状态估计误差协方差,指定为标量ns.元素向量,或ns.——- - - - - -ns.矩阵,其中ns.是系统的状态数。如果指定标量或向量,软件会创建一个ns.——- - - - - -ns.在对角线上有标量或向量元素的对角矩阵。

当您对在中指定的初始状态值没有信心时,请为协方差指定一个高值初始状态

编程使用

块参数:InitialStateCovariance
类型:特征向量,字符串
默认值:' 1 '
测量

测量函数计算N-非线性系统在时间步长的单元输出测量向量k,给出时间步长的状态向量k.中创建度量函数并指定函数名功能.例如,如果vdpMeasurementFcn.m您创建并保存的测量函数是否指定功能作为vdpMeasurementFcn

您创建功能的输入取决于您是否将测量噪声指定为附加或非资金测量噪声

  • 测量噪声添加剂-测量功能h指定度量如何演变为状态值的函数:

    y (k) = h (x (k),听Um1 (k),…,学院(k))

    在哪里y (k)x(k)估计的输出和估计的状态是否在同一时间k, 和听Um1,…,学院您的测量函数需要任何可选的输入参数。例如,如果您使用一个传感器来跟踪一个对象,那么附加的输入可以是传感器位置。

    要查看带有附加过程噪声的测量函数的示例,请键入编辑vdpMeasurementFcn在命令行。

  • 测量噪声非相加-测量函数还指定输出测量如何演变为测量噪声的函数v

    y (k) = h (x (k), v (k),听Um1 (k),…,学院(k))

    要查看带有非加性过程噪声的测量函数的示例,请键入编辑vdpMeasurementNonAdditiveNoiseFcn

有关更多信息,请参阅状态转换和测量功能

您可以创建h使用一个金宝app仿真软件的功能(金宝app模型)块或作为MATLAB函数(.米文件)。

  • 您可以使用MATLAB函数,只有当h是否有一个额外的输入参数听Um1除了xv

    y [k] = h (x [k], [k],听Um1 (k))

    该软件生成一个额外的输入端口MeasurementFcn输入为。指定此参数测量功能。

  • 如果您使用的是金宝app仿真软件的功能块,指定xv使用参数尺寸。(金宝app模型)块和额外的输入听Um1,…,学院使用inport.(金宝app模型)街区在金宝app仿真软件的功能块。你不提供听Um1,…,学院到了扩展卡尔曼筛选器块。

如果系统中有多个传感器,则可以指定多个测量功能。您可以使用最多5个测量功能使用添加测量按钮。删除测量功能,使用删除测量

编程使用

块参数:MeasurementFcn1MeasurementFcn2MeasurementFcn3MeasurementFcn4MeasurementFcn5
类型:特征向量,字符串
默认值:“myMeasurementFcn”

雅各比奥测量功能h,指定为下列其中之一:

  • 离开-软件计算雅可比矩阵的数值。这种计算可能会增加状态估计的处理时间和数值误差。

  • -创建一个函数来计算测量函数的雅可比矩阵h,并指定函数名雅可比矩阵.例如,如果vdpMeasurementJacobianFcn.m是雅可比函数,指定测量jacobianfcn.作为vdpMeasurementJacobianFcn.如果您创建h使用一个金宝app仿真软件的功能(金宝app模型)块,然后使用a创建雅加诺斯金宝app仿真软件的功能块。如果您创建h使用MATLAB函数(.米文件),然后使用MATLAB函数创建雅可比矩阵。

    函数计算测量函数的偏导数h关于状态和测量噪声。雅可比函数的输入数必须等于测量函数的输入数,并且在两个函数中必须以相同的顺序指定。雅可比函数的输出数取决于测量噪声参数:

    • 测量噪声添加剂-函数计算测量函数相对于状态的偏导数( h / x ).输出为N——- - - - - -ns.雅可比矩阵,N是系统的测量数量和ns.是状态数。

      要查看加性测量噪声的雅可比函数的示例,请键入编辑vdpMeasurementJacobianFcn在命令行。

    • 测量噪声非相加-该函数还返回第二个输出,它是测量函数对测量噪声项的偏导数( h / v ).第二个输出作为N——- - - - - -V雅可比矩阵,V为测量噪声项的个数。

编程使用

块参数:HasMeasurementJacobianFcn1HasMeasurementJacobianFcn2HasMeasurementJacobianFcn3HasMeasurementJacobianFcn4HasMeasurementJacobianFcn5
类型:特征向量
价值观:“关闭”“上”
默认值:“关闭”
块参数:MeasurementJacobianFcn1MeasurementJacobianFcn2MeasurementJacobianFcn3MeasurementJacobianFcn4MeasurementJacobianFcn5
类型:特征向量
默认值:

测量噪声特性,指定为下列值之一:

  • 添加剂——测量噪声v是添加剂,以及测量功能h你在功能有以下形式:

    y (k) = h (x (k),听Um1 (k),…,学院(k))

    在哪里y (k)x(k)估计的输出和估计的状态是否在同一时间k, 和听Um1,…,学院您的测量函数需要任何可选的输入参数。

  • 非相加-测量噪声是非附加的,测量函数指定输出测量如何演化为状态函数测量噪声:

    y (k) = h (x (k), v (k),听Um1 (k),…,学院(k))

编程使用

块参数:HasAdditiveMeasurementNoise1HasAdditiveMeasurementNoise2HasAdditiveMeasurementNoise3HasAdditiveMeasurementNoise4HasAdditiveMeasurementNoise5
类型:特征向量
价值观:“添加剂”“非相加”
默认值:“添加剂”

的值指定为标量、矢量或矩阵的时不变过程噪声协方差过程噪声参数:

  • 过程噪声添加剂- 将协议性指定为标量ns.元素向量,或ns.——- - - - - -ns.矩阵,其中ns.是系统的状态数。如果过程噪声项之间没有相互关联且所有项的方差相同,则指定一个标量。指定一个长度的向量ns.,如果过程噪声术语之间没有互相关,但所有术语都具有不同的差异。

  • 过程噪声非相加—指定协方差为aW——- - - - - -W矩阵,其中W为过程噪声项的个数。

如果过程噪声协方差是时变的,选择时变.块生成输入端口来指定时变协方差。

依赖关系

如果您未指定进程噪声,则启用此参数时变

编程使用

块参数:processnoise.
类型:特征向量,字符串
默认值:' 1 '

如果您为第一个测量功能的测量噪声协方差选择此参数,则块包括一个额外的输入端口R1.你指定时间变化的测量噪声协方差R1.同样,如果您选择时变为了th测量功能,块包括附加输入端口R为该函数指定时变测量噪声协方差。

编程使用

块参数:HasTimeVaryingMeasurementNoise1HasTimeVaryingMeasurementNoise2HasTimeVaryingMeasurementNoise3HasTimeVaryingMeasurementNoise4HasTimeVaryingMeasurementNoise5
类型:特征向量
价值观:“关闭”“上”
默认值:“关闭”

假设测量的输出数据在港口的所有时间点都不可用日元这对应于第一个测量函数。选择添加启用端口生成输入端口启用1..在此端口处使用信号,仅在测量数据可用时才能够校正估计的状态。同样,如果在端口的所有时间点都不提供测量的输出数据y为了th测量功能,选择相应的添加启用端口

编程使用

块参数:HasMeasurementEnablePort1HasMeasurementEnablePort2HasMeasurementEnablePort3HasMeasurementEnablePort4HasMeasurementEnablePort5
类型:特征向量
价值观:“关闭”“上”
默认值:“关闭”
设置

选择此参数时,块会输出纠正的状态估计值 x k | k 在时间步k,使用测量输出直到时间k.如果清除此参数,该块将返回预测的状态估计 x k | k - 1 时间k,使用前一时间的测量输出进行估计k - 1.如果您的过滤器处于反馈循环中,并且在您的Simulink模型中存在代数循环,则清除此参数。金宝app

编程使用

块参数:UseCurrentEstimator
类型:特征向量
价值观:“关闭”“上”
默认值:“上”

选择此参数,表示状态估计误差协方差输出端口P在块中生成。

编程使用

块参数:OutputStateCovariance
类型:特征向量
价值观:“关闭”“上”
默认值:“关闭”

使用此参数为所有块参数指定数据类型。

编程使用

块参数:数据类型
类型:特征向量
价值观:“单一”“双”
默认值:“双”

块采样时间,指定为正标量。如果状态转换和测量函数的采样时间不同,请选择使多重速率的操作在里面多重速率的选项卡,并在多重速率的代替标签。

依赖关系

如果在中,此参数可用多重速率的选项卡,使多重速率的操作参数是离开

编程使用

块参数:SampleTime
类型:特征向量,字符串
默认值:' 1 '

多重速率的选项卡

如果状态转换和测量函数的采样次数不同,请选择此参数。的示例时间多重速率的标签,in.样品时间

编程使用

块参数:EnableMultirate
类型:特征向量
价值观:“关闭”“上”
默认值:“关闭”

如果状态转换的采样时间和测量函数不同,请指定样品时间.指定测量函数的采样时间为状态转换采样时间的正整数倍。您指定的采样次数对应以下输入端口:

  • 状态转换函数对应的端口-状态转换函数的附加输入StateTransitionFcnInputs和时变过程噪声协方差.这些端口的采样时间必须始终等于状态转换功能采样时间,但可以与测量功能的采样时间不同。

  • 相对应的端口th测量功能-测量输出y,增加测量功能的输入MeasurementFcn输入,在端口启用信号启用,和时变测量噪声协方差R.对于相同的测量函数,这些端口的采样时间必须总是相同的,但可以与状态转移函数和其他测量函数的采样时间不同。

依赖关系

如果在中,此参数可用多重速率的选项卡,使多重速率的操作参数是

编程使用

块参数:StateTransitionFcnsampletime.MeasurementFcn1SampleTime1MeasurementFcn1SampleTime2MeasurementFCN1Sampletime3.MeasurementFCN1Sampletime4.MeasurementFCN1Sampletime5.
类型:特征向量,字符串
默认值:' 1 '

更多关于

全部展开

兼容性考虑因素

全部展开

R2020B的行为更改

扩展功能

介绍了R2017a