主要内容

扩展卡尔曼滤波器

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

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

    系统识别工具箱/估计器

  • ekf_block

描述

扩展卡尔曼滤波器采用一阶离散扩展卡尔曼滤波算法对离散非线性系统的状态进行块估计。

考虑一个有状态的工厂x、输入u、输出y,过程噪声w,测量噪声v.假设你可以把植物表示成一个非线性系统。

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

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

港口

输入

全部展开

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

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

依赖关系

第一个端口日元默认可用。港口y2日元是在单击时生成的添加测量,并单击应用

数据类型:|

状态转换函数的额外可选输入参数f除了国家x以及过程噪声w.有关状态转移函数的信息,请参见,状态转换和测量函数

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

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

在这里k是时间步长,和StateTransitionFcnInputs是否有其他输入参数x而且w

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

如果状态转换函数有多个额外输入,请使用金宝app仿真软件的功能(金宝app模型)块来指定函数。当你使用金宝app仿真软件的功能块时,您可以直接向金宝app仿真软件的功能块使用轮廓尺寸(金宝app模型)块。的附加输入不生成输入端口扩展卡尔曼滤波器块。

依赖关系

只有同时满足以下两个条件时,才会生成该端口:

  • 你指定f函数使用MATLAB函数,以及f在MATLAB路径上。

  • f只需要一个额外的输入参数x而且w

数据类型:|

对状态以外的测量函数的其他可选输入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是时间步长,和MeasurementFcn1Inputs而且MeasurementFcn2Inputs附加的输入参数是h1而且h2

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

如果您的测量函数有多个额外的输入,请使用金宝app仿真软件的功能(金宝app模型)块来指定函数。当你使用金宝app仿真软件的功能块时,您可以直接向金宝app仿真软件的功能块使用轮廓尺寸(金宝app模型)块。的附加输入不生成输入端口扩展卡尔曼滤波器块。

依赖关系

对应测量函数的端口h仅当满足以下两个条件时才会生成:

  • 你指定h函数使用MATLAB函数,以及h在MATLAB路径上。

  • h只需要一个额外的输入参数x而且v

数据类型:|

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

  • 过程噪声添加剂-将协方差指定为标量Ns-element vector或anNs——- - - - - -Ns矩阵,Ns是系统的状态数。如果过程噪声项之间没有相互关联,并且所有项具有相同的方差,则指定标量。指定长度向量Ns,如果过程噪声项之间不存在相互关联,但各项的方差不同。

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

依赖关系

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

数据类型:|

系统最多5个测量函数的时变测量噪声协方差,指定为矩阵。的值决定矩阵的大小测量噪声对应测量函数参数:

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

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

依赖关系

如果指定测量噪声协方差为,则生成端口时变对应的测量函数。单击时将显示端口应用

数据类型:|

假设测量的输出数据在端口上的所有时间点都不可用日元这对应于第一个测量函数。使用信号值以外的0Enable1端口,以便在测量数据可用时校正估计状态。指定端口值为0当测量数据不可用时。类似地,如果测量的输出数据在端口上的所有时间点都不可用yth测量功能,指定相应端口启用作为一种价值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除了x而且w

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

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

  • 如果你正在使用金宝app仿真软件的功能块,指定x而且w使用参数尺寸。(金宝app模型)块和额外的输入Us1,…,Usn使用轮廓尺寸(金宝app模型)块的金宝app仿真软件的功能块。你没有提供Us1,…,Usn扩展卡尔曼滤波器块。

编程使用

块参数:StateTransitionFcn
类型:字符向量,字符串
默认值:“myStateTransitionFcn”

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

  • -软件计算雅可比矩阵数值。这种计算可能会增加状态估计的处理时间和数值不准确性。

  • -创建一个函数来计算雅可比矩阵,并在雅可比矩阵.例如,如果vdpStateJacobianFcn.m是雅可比函数,具体是什么雅可比矩阵作为vdpStateJacobianFcn.如果你创建了状态转换函数f使用一个金宝app仿真软件的功能(金宝app模型)块,然后创建雅可比矩阵使用金宝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-element vector或anNs——- - - - - -Ns矩阵,Ns是系统的状态数。如果过程噪声项之间没有相互关联且所有项的方差相同,则指定标量。指定长度向量Ns,如果过程噪声项之间不存在交叉相关,但各项的方差不同,则为。

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

如果过程噪声协方差随时间变化,则选择时变.块生成输入端口要指定时变协方差。

依赖关系

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

编程使用

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

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

编程使用

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

初始状态估计值,指定为Ns-element vector,其中Ns是系统的状态数。根据您对系统的了解指定初始状态值。

编程使用

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

状态估计误差协方差,指定为一个标量Ns-element vector或anNs——- - - - - -Ns矩阵,Ns是系统的状态数。如果您指定一个标量或向量,软件将创建一个Ns——- - - - - -Ns在对角线上有标量或矢量元素的对角线矩阵。

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

编程使用

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

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

所创建函数的输入取决于将测量噪声指定为添加性或非添加性测量噪声

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

    y(k) = h(x(k),Um1(k),…,Umn(k))

    在哪里y (k)而且x (k)估计的输出和估计的状态是否及时k,听Um1,…,学院测量函数所需的任何可选输入参数。例如,如果您正在使用传感器跟踪一个对象,则额外的输入可以是传感器位置。

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

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

    y(k) = h(x(k),v(k),Um1(k),…,Umn(k))

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

有关更多信息,请参见状态转换和测量函数

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

  • 你可以使用MATLAB函数只有当h有一个额外的输入参数吗听Um1除了x而且v

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

    软件生成一个额外的输入端口MeasurementFcn输入属性的此参数测量函数。

  • 如果你正在使用金宝app仿真软件的功能块,指定x而且v使用参数尺寸。(金宝app模型)块和额外的输入听Um1,…,学院使用轮廓尺寸(金宝app模型)块的金宝app仿真软件的功能块。你没有提供听Um1,…,学院扩展卡尔曼滤波器块。

如果您的系统中有多个传感器,您可以指定多个测量功能。属性最多可以指定五个度量函数添加测量按钮。若要删除测量函数,请使用删除测量

编程使用

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

测量函数的雅可比矩阵h,指定为以下其中之一:

  • -软件计算雅可比矩阵数值。这种计算可能会增加状态估计的处理时间和数值不准确性。

  • -创建一个函数来计算测量函数的雅可比矩阵h中指定函数的名称雅可比矩阵.例如,如果vdpMeasurementJacobianFcn.m是雅可比函数,具体是什么MeasurementJacobianFcn作为vdpMeasurementJacobianFcn.如果你创建h使用一个金宝app仿真软件的功能(金宝app模型)块,然后创建雅可比矩阵使用金宝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),…,Umn(k))

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

  • 非相加-测量噪声是非可加性的,测量函数指定输出测量如何作为状态的函数演变而且测量噪声:

    y(k) = h(x(k),v(k),Um1(k),…,Umn(k))

编程使用

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

选择此参数,当您拥有独立于模型状态的循环测量时,可以启用测量包装来估计状态。如果选择此参数,则指定的测量函数必须包含以下两个输出:

  1. 测量,用a表示N-非线性系统在时间步长的单元输出测量向量k,给定时间步长的状态向量kN是系统的测量次数。

  2. 度量包裹边界,指定为N——- - - - - -2其中,第一列提供最小测量界,第二列提供最大测量界。

使有测量包装复选框将测量残差包装在定义的范围内,这有助于防止由于不正确的测量残差值而导致滤波器发散。有关示例,请参见使用扩展卡尔曼滤波器的包裹测量状态估计

编程使用

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

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

  • 过程噪声添加剂-将协方差指定为标量Ns-element vector或anNs——- - - - - -Ns矩阵,Ns是系统的状态数。如果过程噪声项之间没有相互关联且所有项的方差相同,则指定标量。指定长度向量Ns,如果过程噪声项之间不存在交叉相关,但各项的方差不同,则为。

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

如果过程噪声协方差随时间变化,则选择时变.块生成输入端口要指定时变协方差。

依赖关系

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

编程使用

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

如果为第一个测量函数的测量噪声协方差选择此参数,则该块包含一个额外的输入端口R1.中指定随时间变化的测量噪声协方差R1.类似地,如果您选择时变th测量功能,该块包括一个额外的输入端口R指定该函数的时变测量噪声协方差。

编程使用

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

假设测量的输出数据在端口上的所有时间点都不可用日元这对应于第一个测量函数。选择添加启用端口生成一个输入端口Enable1.只有在测量数据可用时,才使用此端口的信号来校正估计状态。类似地,如果测量的输出数据在端口上的所有时间点都不可用yth测量功能,选择相应的添加启用端口

编程使用

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

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

编程使用

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

如果选择此参数,则输出一个状态估计误差协方差端口P在块中生成。

编程使用

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

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

编程使用

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

块采样时间,指定为正标量。如果状态转换和测量函数的采样时间不同,请选择启用多速率操作多重速率的选项卡中指定采样次数多重速率的选项卡。

依赖关系

时,此参数有效多重速率的选项卡,启用多速率操作参数是

编程使用

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

多重速率的选项卡

当状态转换和测量函数的采样次数不同时,请选择此参数。中指定采样时间多重速率的选项卡,在样品时间

编程使用

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

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

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

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

依赖关系

时,此参数有效多重速率的选项卡,启用多速率操作参数是

编程使用

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

更多关于

全部展开

扩展功能

版本历史

在R2017a中引入

全部展开