主要内容

extendedKalmanFilter

创建扩展卡尔曼滤波对象,用于在线状态估计

描述

例子

obj= extendedKalmanFilter (StateTransitionFcnMeasurementFcnInitialState为离散非线性系统的在线状态估计创建了一个扩展的卡尔曼滤波对象。StateTransitionFcn是一个计算系统状态的函数吗k,给定时刻的状态向量k1。MeasurementFcn是一个计算系统在某个时刻的输出测量值的函数吗k,考虑到当时的状态kInitialState指定状态估计的初始值。

创建对象后,使用正确的预测命令,使用一阶离散时间扩展卡尔曼滤波算法和实时数据更新状态估计和状态估计误差协方差值。

例子

obj= extendedKalmanFilter (StateTransitionFcnMeasurementFcnInitialState名称,值使用一个或多个属性指定扩展卡尔曼滤波器对象的附加属性名称,值对参数。

obj= extendedKalmanFilter (StateTransitionFcnMeasurementFcn使用指定的状态转换和测量函数创建扩展的卡尔曼滤波器对象。在使用预测正确的命令时,使用点表示法指定初始状态值。例如,对于具有初始状态值的两态系统(1, 0),指定obj。状态= [1;0]

obj= extendedKalmanFilter (StateTransitionFcnMeasurementFcn名称,值使用一个或多个属性指定扩展卡尔曼滤波器对象的附加属性名称,值对参数。在使用预测正确的命令,使用。指定初始状态值名称,值对参数或点符号。

例子

obj= extendedKalmanFilter (名称,值创建一个扩展卡尔曼滤波器对象,其属性使用一个或多个指定名称,值对参数。在使用预测正确的命令,指定状态转换函数、测量函数和初始状态值名称,值对参数或点符号。

对象描述

extendedKalmanFilter利用一阶离散扩展卡尔曼滤波算法对离散非线性系统进行在线状态估计。

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

该算法计算状态估计 x 使用状态转换和测量函数的非线性系统。该软件可让您指定这些函数中的噪声为加性或非加性:

  • 附加噪声项-状态转换和测量方程的形式如下:

    x ( k ] = f x ( k 1 ] u 年代 ( k 1 ] + w ( k 1 ] y ( k ] = h x ( k ] u ( k ] + v ( k ]

    在这里f是描述状态演化的非线性状态转移函数吗x从一个时间步到下一个。非线性测量函数h有关x测量结果y在时间步长kwv分别为零均值、不相关过程噪声和测量噪声。这些函数也可以有额外的输入参数,用。表示u年代u在方程中。例如,附加参数可以是时间步长k或者输入u对于非线性系统。可以有多个这样的论点。

    注意,两个方程中的噪声项都是可加的。也就是说,x (k)是否与工艺噪声线性相关w (k - 1),y (k)是否与测量噪声线性相关v (k)

  • 非加性噪声项-该软件还支持更复杂的状态转换和测量功能万博1manbetx,其中状态x(k]和测量y(k]分别为过程噪声和测量噪声的非线性函数。当噪声项为非加性时,状态跃迁和测量方程为:

    x ( k ] = f x ( k 1 ] w ( k 1 ] u 年代 ( k 1 ] y ( k ] = h x ( k ] v ( k ] u ( k ]

当您执行在线状态估计时,您首先创建非线性状态转换函数f以及测量功能h。然后你构建extendedKalmanFilter对象使用这些非线性函数,并指定噪声项是加性的还是非加性的。您还可以指定状态转换和测量函数的雅可比矩阵。如果你不指定它们,软件会计算雅可比矩阵。

创建对象之后,将使用预测命令来预测下一个时间步的状态估计,和正确的利用算法和实时数据修正状态估计。有关该算法的信息,请参见在线状态估计的扩展和无气味卡尔曼滤波算法

可以使用以下命令extendedKalmanFilter对象:

命令 描述
正确的

修正时间步长的状态和状态估计误差协方差k使用时间步长的测量数据k

预测

预测下一时刻的状态和状态估计误差协方差。

剩余 返回实际测量值和预测测量值之间的差值。
克隆

创建具有相同对象属性值的另一个对象。

不使用语法创建其他对象Obj2 = obj。以这种方式创建的新对象的属性所做的任何更改(methoda)也会改变原始对象的属性(obj).

extendedKalmanFilter对象属性,请参见属性

例子

全部折叠

要定义用于估计系统状态的扩展卡尔曼滤波对象,首先要编写并保存系统的状态转换函数和测量函数。

在本例中,使用先前编写并保存的状态转换和测量函数,vdpStateFcn.mvdpMeasurementFcn.m。这些函数描述了一个非线性参数mu等于1的范德波尔振荡器的离散逼近。振荡器有两种状态。

为这两种状态指定初始猜测值。您将猜测指定为-元素行或列向量,其中是状态数。

initialStateGuess = [1;0];

创建扩展的卡尔曼滤波器对象。使用函数句柄为对象提供状态转换和度量函数。

obj = extendedKalmanFilter(@vdpStateFcn,@vdpMeasurementFcn,initialStateGuess);

对象具有一个默认结构,其中过程和测量噪声是相加的。

要估计构造对象的状态和状态估计误差协方差,请使用正确的预测命令和实时数据。

为具有两个状态和一个输出的范德波尔振荡器创建扩展卡尔曼滤波器对象。使用之前编写和保存的状态转换和测量函数,vdpStateFcn.mvdpMeasurementFcn.m。这些函数是为加性过程和测量噪声项编写的。将这两个状态的初始状态值指定为[2;0]。

由于系统具有两种状态,且过程噪声是可加性的,因此过程噪声是一个2元向量,过程噪声协方差是一个2 × 2矩阵。假设过程噪声项之间没有相互关系,并且两个项具有相同的方差0.01。可以将过程噪声协方差指定为标量。该软件使用标量值来创建一个2乘2的对角线矩阵,对角线上有0.01。

指定对象构建期间的过程噪声协方差。

obj = extendedKalmanFilter(@vdpStateFcn,@vdpMeasurementFcn,[2;0],“ProcessNoise”, 0.01);

或者,您可以在对象构造之后使用点表示法指定噪声协方差。例如,指定测量噪声协方差为0.2。

obj。米easurementNoise = 0.2;

由于系统只有一个输出,所以测量噪声是一个1元矢量MeasurementNoise属性表示测量噪声的方差。

为具有两个状态和一个输出的范德波尔振荡器创建扩展卡尔曼滤波器对象。使用之前编写和保存的状态转换和测量函数,vdpStateFcn.mvdpMeasurementFcn.m。将这两个状态的初始状态值指定为[2;0]。

obj = extendedKalmanFilter(@vdpStateFcn,@vdpMeasurementFcn,[2;0]);

扩展卡尔曼滤波算法利用状态转移和测量函数的雅可比矩阵进行状态估计。编写并保存雅可比函数,并将它们作为对象的函数句柄提供给对象。在本例中,使用前面编写和保存的函数vdpStateJacobianFcn.mvdpMeasurementJacobianFcn.m

obj。StateTransitionJacobianFcn = @vdpStateJacobianFcn;obj。米easurementJacobianFcn = @vdpMeasurementJacobianFcn;

请注意,如果您没有指定函数的雅可比矩阵,则软件会以数值方式计算雅可比矩阵。这种数值计算可能会增加处理时间和状态估计的数值不准确性。

为具有两个状态和一个输出的范德波尔振荡器创建扩展卡尔曼滤波器对象。假设状态转移函数中的过程噪声项是加性的。也就是说,状态与过程噪声之间存在线性关系。同时假定测量噪声项是非加性的。即测量值与测量噪声之间存在非线性关系。

obj = extendedKalmanFilter()“HasAdditiveMeasurementNoise”、假);

指定状态转换函数和测量函数。使用之前编写和保存的函数,vdpStateFcn.mvdpMeasurementNonAdditiveNoiseFcn.m

假设过程噪声是可加性的,则写出状态转移函数。假设测量噪声是非加性的,则写出测量函数。

obj。stattransitionfcn = @vdpStateFcn;obj。米easurementFcn = @vdpMeasurementNonAdditiveNoiseFcn;

将这两个状态的初始状态值指定为[2;0]。

obj。State = [2;0];

您现在可以使用正确的预测用于估计构造对象的状态和状态估计误差协方差值的命令。

考虑一个有输入的非线性系统u的状态x和测量y根据以下状态转移和测量方程进行演化:

x ( k ] = x ( k - 1 ] + u ( k - 1 ] + w ( k - 1 ]

y ( k ] = x ( k ] + 2 * u ( k ] + v ( k ] 2

过程噪声w系统的测量噪声是加性的v非相加。

为系统创建状态转换函数和测量函数。指定带有附加输入的函数u

F = @(x,u)(√(x+u));H = @(x,v,u)(x+2*u+v^2);

fh分别是存储状态转换和度量函数的匿名函数的函数句柄。在测量函数中,由于测量噪声是非加性的,v也被指定为输入。请注意,v在附加输入之前被指定为输入u

创建一个扩展卡尔曼滤波对象,用于使用指定函数估计非线性系统的状态。指定状态的初始值为1,测量噪声为非加性。

obj = extendedKalmanFilter(f,h,1,“HasAdditiveMeasurementNoise”、假);

指定测量噪声协方差。

obj。米easurementNoise = 0.01;

的方法来估计系统的状态预测正确的命令。传递的值u预测正确的,然后将它们分别传递给状态转换和度量函数。

用测量修正状态估计y(k] =0.8和输入u(k] =0.2在时间步长k

正确的(obj, 0.8, 0.2)

预测下一个时间步的状态,给定u(k] =0.2

预测(obj, 0.2)

检索错误,或者剩余,在预测和测量之间。

[残差,残差]=残差(obj,0.8,0.2);

输入参数

全部折叠

状态转移函数f,指定为函数句柄。该函数计算Ns-系统在时间步长的单元状态向量k,给定时间步长的状态向量k1。Ns是非线性系统的状态数。

您为您的非线性系统编写并保存状态转换函数,并使用它来构造对象。例如,如果vdpStateFcn.m是状态转换函数,指定吗StateTransitionFcn作为@vdpStateFcn。你也可以指定StateTransitionFcn作为匿名函数的函数句柄。

所写函数的输入取决于是否将过程噪声指定为可加性或非可加性HasAdditiveProcessNoise对象的属性:

  • HasAdditiveProcessNoise是真的-过程噪音w为可加性,状态转移函数表示状态如何作为前一个时间步长状态值的函数演变:

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

    在哪里x (k)是当时的估计状态吗k,Us1,…,Usn是否状态转换函数所需的任何其他输入参数,例如系统输入或采样时间。在估计期间,您将这些附加参数传递给预测命令,然后将它们传递给状态转换函数。

  • HasAdditiveProcessNoise为假-过程噪声是非加性的,状态转换函数也指定状态如何演变为过程噪声的函数:

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

要查看带有加性过程噪声的状态转换函数的示例,键入编辑vdpStateFcn在命令行。

测量功能h,指定为函数句柄。该函数计算N非线性系统在时间步长的-单元输出测量向量k,给定时间步长的状态向量kN是系统的测量次数。您编写并保存度量函数,并使用它来构造对象。例如,如果vdpMeasurementFcn.m是测量功能,指定吗MeasurementFcn作为@vdpMeasurementFcn。你也可以指定MeasurementFcn作为匿名函数的函数句柄。

函数的输入取决于您是将测量噪声指定为加性的还是非加性的HasAdditiveMeasurementNoise对象的属性:

  • HasAdditiveMeasurementNoise是真的-测量噪声v是可加性的,测量函数指定了测量值如何作为状态值的函数演变:

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

    在哪里y (k)x (k)估计的输出和估计的状态在时间k,听Um1,…,学院测量函数所需的任何可选输入参数。例如,如果您使用多个传感器来跟踪一个对象,则额外的输入可能是传感器位置。在估计期间,您将这些附加参数传递给正确的命令,然后将它们传递给度量函数。

  • HasAdditiveMeasurementNoise为假-测量噪声是非加性的,并且测量函数还指定了输出测量如何作为测量噪声的函数演变:

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

当你有HasMeasurementWrapping属性,则度量函数的输出还必须包括包装边界,指定为N——- - - - - -2矩阵中,第一列提供最小测量界,第二列提供最大测量界。N是系统的测量次数。

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

初始状态估计值,指定为Ns-元素向量,其中Ns是系统的状态数。根据您对系统的了解来指定初始状态值。

指定的值存储在状态属性。如果你指定InitialState作为一个列向量状态也是一个列向量,那么预测正确的命令返回状态估计值作为列向量。否则,返回一个行向量。

如果您想要一个具有单精度浮点变量的过滤器,请指定InitialState作为一个单精度向量变量。例如,对于具有状态转换和测量函数的两态系统vdpStateFcn.mvdpMeasurementFcn.m,创建具有初始状态估计的扩展卡尔曼滤波器对象[1, 2]如下:

obj = extendedKalmanFilter(@vdpStateFcn,@vdpMeasurementFcn,single([1;2]))

数据类型:|

名称-值参数

指定可选的参数对为Name1 = Value1,…,以=家,在那里名字参数名称和价值是对应的值。名称-值参数必须出现在其他参数之后,但对的顺序无关紧要。

在R2021a之前,使用逗号分隔每个名称和值,并将其括起来名字在报价。

使用名称,值要指定的参数属性extendedKalmanFilter对象创建过程中。例如,创建扩展卡尔曼滤波对象,并指定过程噪声协方差为0.01:

obj = extendedKalmanFilter(stattransitionfcn,MeasurementFcn,InitialState,“ProcessNoise”, 0.01);

属性

全部折叠

extendedKalmanFilter对象属性有三种类型:

  • 可调属性,您可以在对象构造期间使用名称,值参数,或者在状态估计之后的任何时间。对象创建后,使用点符号来修改可调属性。

    obj = extendedKalmanFilter(stattransitionfcn,MeasurementFcn,InitialState);obj。ProcessNoise = 0.01;

    可调属性有状态StateCovarianceProcessNoise,MeasurementNoise

  • 只能在对象构造期间或之后使用点概念指定一次的不可调属性。在使用状态估计之前指定这些属性正确的预测。的StateTransitionFcnMeasurementFcnStateTransitionJacobianFcn,MeasurementJacobianFcn属性属于这一类。

  • 必须在对象构造期间指定的不可调属性。的HasAdditiveProcessNoiseHasAdditiveMeasurementNoise属性属于这一类。

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

  • 真正的-测量噪音v是添加剂。测量功能h这是在MeasurementFcn有如下形式:

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

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

  • —测量噪声是非加性的。度量函数指定输出度量如何作为状态的函数发展测量噪声:

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

HasAdditiveMeasurementNoise是一个不可调属性,您只能在对象构造期间指定它。您不能使用点表示法更改它。

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

  • 真正的-过程噪音w是添加剂。状态转移函数f中指定的StateTransitionFcn有如下形式:

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

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

  • -过程噪声是非加性的。状态转换函数指定状态如何演变为状态的函数前一时间步的过程噪声:

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

HasAdditiveProcessNoise是一个不可调属性,您只能在对象构造期间指定它。您不能使用点表示法更改它。

测量功能h,指定为函数句柄。该函数计算N非线性系统在时间步长的-单元输出测量向量k,给定时间步长的状态向量kN是系统的测量次数。您编写并保存测量函数,并使用它来构造对象。例如,如果vdpMeasurementFcn.m是测量功能,指定吗MeasurementFcn作为@vdpMeasurementFcn。你也可以指定MeasurementFcn作为匿名函数的函数句柄。

函数的输入取决于您是将测量噪声指定为加性的还是非加性的HasAdditiveMeasurementNoise对象的属性:

  • HasAdditiveMeasurementNoise是真的-测量噪声v是可加性的,测量函数指定了测量值如何作为状态值的函数演变:

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

    在哪里y (k)x (k)估计的输出和估计的状态在时间k,听Um1,…,学院测量函数所需的任何可选输入参数。例如,如果您使用多个传感器来跟踪一个对象,则额外的输入可能是传感器位置。在估计期间,您将这些附加参数传递给正确的命令,然后将它们传递给度量函数。

  • HasAdditiveMeasurementNoise为假-测量噪声是非加性的,并且测量函数还指定了输出测量如何作为测量噪声的函数演变:

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

当你有HasMeasurementWrapping属性,则度量函数的输出还必须包括包装边界,指定为N——- - - - - -2矩阵中,第一列提供最小测量界,第二列提供最大测量界。N是系统的测量次数。

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

MeasurementFcn是一个不可调属性。属性之前可以指定它一次正确的命令,可以在对象构造期间使用,也可以在对象构造之后使用点符号。后不能更改正确的命令。

测量函数的雅可比矩阵h,指明为下列其中一项:

  • []-雅可比矩阵在每次调用时进行数值计算正确的命令。这可能会增加处理时间和状态估计的数值不准确性。

  • 函数句柄——编写并保存雅可比函数,并指定函数的句柄。例如,如果vdpMeasurementJacobianFcn.m是雅可比函数,具体是吗MeasurementJacobianFcn作为@vdpMeasurementJacobianFcn

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

    • HasAdditiveMeasurementNoise为真-该函数计算测量函数相对于状态( h / x ).输出为N——- - - - - -Ns雅可比矩阵,其中N系统的测量次数是多少Ns是状态数。

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

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

MeasurementJacobianFcn是一个不可调属性。属性之前可以指定它一次正确的命令,可以在对象构造期间使用,也可以在对象构造之后使用点符号。后不能更改正确的命令。

测量噪声协方差,指定为一个标量或矩阵取决于值HasAdditiveMeasurementNoise属性:

  • HasAdditiveMeasurementNoise为真-将协方差指定为标量或N——- - - - - -N矩阵,N是系统的测量次数。如果测量噪声项之间没有相互关系,并且所有项都具有相同的方差,则指定一个标量。该软件使用标量值创建一个N——- - - - - -N对角矩阵。

  • HasAdditiveMeasurementNoise是false -指定协方差为V——- - - - - -V矩阵,V为测量噪声项的个数。MeasurementNoise使用前必须指定正确的。在你指定之后MeasurementNoise作为矩阵的第一次,然后改变MeasurementNoise您也可以将其指定为标量。如果测量噪声项之间没有相互关系,并且所有项具有相同的方差,则指定为标量。软件将标量扩展为aV——- - - - - -V对角矩阵,标量在对角线上。

MeasurementNoise是一个可调属性。你可以用点符号来改变它。

的值指定为标量或矩阵的过程噪声协方差HasAdditiveProcessNoise属性:

  • HasAdditiveProcessNoise为真-将协方差指定为标量或Ns——- - - - - -Ns矩阵,Ns是系统的状态数。如果过程噪声项之间没有相互关联,并且所有项具有相同的方差,则指定一个标量。该软件使用标量值创建一个Ns——- - - - - -Ns对角矩阵。

  • HasAdditiveProcessNoise是false -指定协方差为W——- - - - - -W矩阵,W是过程噪声项的个数。ProcessNoise使用前必须指定预测。在你指定之后ProcessNoise作为矩阵的第一次,然后改变ProcessNoise您也可以将其指定为标量。如果过程噪声项之间没有相互关联,并且所有项都具有相同的方差,则指定为标量。软件将标量扩展为aW——- - - - - -W对角矩阵。

ProcessNoise是一个可调属性。你可以用点符号来改变它。

非线性系统的状态,用大小的向量表示Ns,在那里Ns是系统的状态数。

当你使用预测命令,状态在时间步长用预测值更新k使用时间步长的状态值k1。当你使用正确的命令,状态在时间步长用估计值更新k使用时间步长的测量数据k

的初始值状态中指定的值是否为InitialState对象创建时的输入参数。如果你指定InitialState作为一个列向量状态也是一个列向量,那么预测正确的命令返回状态估计值作为列向量。否则,返回一个行向量。如果您想要一个具有单精度浮点变量的过滤器,您必须指定状态作为对象构造过程中的单精度变量InitialState输入参数。

状态是一个可调属性。你可以用点符号来改变它。

状态估计误差协方差,指定为标量或Ns——- - - - - -Ns矩阵,Ns是系统的状态数。如果指定一个标量,则软件使用该标量值创建一个Ns——- - - - - -Ns对角矩阵。

方法中指定的初始状态值没有信心时,为协方差指定一个高值InitialState输入参数。

当你使用预测命令,StateCovariance在时间步长用预测值更新k使用时间步长的状态值k1。当你使用正确的命令,StateCovariance在时间步长用估计值更新k使用时间步长的测量数据k

StateCovariance是一个可调属性。属性后,可以使用点表示法更改它正确的预测命令。

状态转移函数f,指定为函数句柄。该函数计算Ns-系统在时间步长的单元状态向量k,给定时间步长的状态向量k1。Ns是非线性系统的状态数。

您为您的非线性系统编写并保存状态转换函数,并使用它来构造对象。例如,如果vdpStateFcn.m是状态转换函数,指定吗StateTransitionFcn作为@vdpStateFcn。你也可以指定StateTransitionFcn作为匿名函数的函数句柄。

所写函数的输入取决于是否将过程噪声指定为可加性或非可加性HasAdditiveProcessNoise对象的属性:

  • HasAdditiveProcessNoise是真的-过程噪音w为可加性,状态转移函数表示状态如何作为前一个时间步长状态值的函数演变:

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

    在哪里x (k)是当时的估计状态吗k,Us1,…,Usn是否状态转换函数所需的任何其他输入参数,例如系统输入或采样时间。在估计期间,您将这些附加参数传递给预测命令,然后将它们传递给状态转换函数。

  • HasAdditiveProcessNoise为假-过程噪声是非加性的,状态转换函数也指定状态如何演变为过程噪声的函数:

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

要查看带有加性过程噪声的状态转换函数的示例,键入编辑vdpStateFcn在命令行。

StateTransitionFcn是一个不可调属性。属性之前可以指定它一次预测命令,可以在对象构造期间使用,也可以在对象构造之后使用点符号。后不能更改预测命令。

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

  • []-雅可比矩阵在每次调用时进行数值计算预测命令。这可能会增加处理时间和状态估计的数值不准确性。

  • 函数句柄——编写并保存雅可比函数,并指定函数的句柄。例如,如果vdpStateJacobianFcn.m是雅可比函数,具体是吗StateTransitionJacobianFcn作为@vdpStateJacobianFcn

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

    • HasAdditiveProcessNoise为真-该函数计算状态转移函数对状态( f / x ).输出是Ns——- - - - - -Ns雅可比矩阵,其中Ns是状态数。

    • HasAdditiveProcessNoise为假-该函数还必须返回第二个输出,该输出是状态转换函数对过程噪声项( f / w ).第二个输出作为Ns——- - - - - -W雅可比矩阵,其中W是过程噪声项的个数。

扩展卡尔曼滤波算法利用雅可比矩阵计算状态估计误差协方差。

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

StateTransitionJacobianFcn是一个不可调属性。属性之前可以指定它一次预测命令,可以在对象构造期间使用,也可以在对象构造之后使用点符号。后不能更改预测命令。

启用度量包装,指定为0或1。当您拥有独立于模型状态的圆形测量时,您可以启用测量包装来估计状态。如果选择此参数,则指定的测量功能必须包括以下两个输出:

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

  2. 测量封装边界,指定为N——- - - - - -2矩阵中,第一列提供最小测量界,第二列提供最大测量界。

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

HasMeasurementWrapping是一个不可调属性。您可以在对象构造期间指定它一次。在创建状态估计对象后不能更改它。

输出参数

全部折叠

用于在线状态估计的扩展卡尔曼滤波对象,作为一个返回extendedKalmanFilter对象。该对象是使用指定的属性。使用正确的预测命令估计状态和状态估计误差协方差使用扩展卡尔曼滤波算法。

当你使用预测obj。状态obj。StateCovariance在时间步长用预测值更新吗k使用时间步长的状态值k1。当你使用正确的obj。状态obj。StateCovariance在时间步长用估计值更新吗k使用时间步长的测量数据k

扩展功能

版本历史

在R2016b中引入

全部展开