主要内容

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时间步长kw而且v分别为零均值、不相关过程噪声和测量噪声。这些函数还可以有附加的输入参数,用u年代而且u在方程中。例如,附加参数可以是时间步长k或者输入u对非线性系统。可以有多个这样的参数。

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

  • 非加性噪声项该软件还支持更复杂的状态转换和测量功能金宝appxk]和测量yk]分别是过程噪声和测量噪声的非线性函数。当噪声项非加性时,状态转移与测量方程有如下形式:

    x k f x k 1 w k 1 u 年代 k 1 y k h x k v k u k

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

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

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

命令 描述
正确的

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

预测

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

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

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

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

extendedKalmanFilter对象属性,请参见属性

例子

全部折叠

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

在这个例子中,使用之前写的和保存的状态转换和测量函数,vdpStateFcn.m而且vdpMeasurementFcn.m.这些函数描述了具有非线性参数mu = 1的范德波尔振子的离散近似。振子有两种状态。

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

initialStateGuess = [1;0];

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

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

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

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

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

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

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

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

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

obj。米easurementNoise = 0.2;

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

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

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

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

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

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

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

obj = extendedKalmanFilter(“HasAdditiveMeasurementNoise”、假);

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

假设过程噪声是加性的,给出了状态转移函数。假设测量噪声是非加性的,测量函数是这样写的。

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

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

obj。状态= [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);

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

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

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

指定测量噪声协方差。

obj。米easurementNoise = 0.01;

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

用测量纠正状态估计yk] =0.8和输入uk] =0.2时间步长k

正确的(obj, 0.8, 0.2)

预测给定的下一个时间步的状态uk] =0.2

预测(obj, 0.2)

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

[Residual, ResidualCovariance] = Residual (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为false -过程噪声是非可加性的,并且状态转换函数还指定了状态如何作为过程噪声的函数演化:

    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为false -测量噪声是非可加性的,并且测量函数还指定输出测量如何作为测量噪声的函数演变:

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

当你有HasMeasurementWrapping属性启用时,则测量函数的输出还必须包括作为N——- - - - - -2其中,第一列提供最小测量界,第二列提供最大测量界。N是系统的测量次数。

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

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

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

如果希望筛选器具有单精度浮点变量,请指定InitialState作为一个单精度矢量变量。例如,对于具有状态转换和测量功能的双态系统vdpStateFcn.m而且vdpMeasurementFcn.m,创建带有初始状态估计的扩展卡尔曼滤波器对象[1, 2]如下:

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

数据类型:|

名称-值参数

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

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

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

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

属性

全部折叠

extendedKalmanFilter对象属性有三种类型:

  • 可以多次指定的可调属性,可以在对象构造期间使用名称,值参数,或者状态估计之后的任何时间。创建对象后,使用点表示法修改可调属性。

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

    可调属性为状态StateCovarianceProcessNoise,MeasurementNoise

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

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

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

  • 真正的-测量噪声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为false -测量噪声是非可加性的,并且测量函数还指定输出测量如何作为测量噪声的函数演变:

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

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

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

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

  • HasAdditiveProcessNoise为false -指定协方差为aW——- - - - - -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为false -过程噪声是非可加性的,并且状态转换函数还指定了状态如何作为过程噪声的函数演化:

    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为false -该函数还必须返回第二个输出,该输出是状态转移函数相对于过程噪声项的偏导数( f / w ).第二个输出返回为Ns——- - - - - -W雅可比矩阵,其中W是过程噪声项的个数。

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

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

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

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

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

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

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

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

输出参数

全部折叠

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

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

扩展功能

版本历史

在R2016b中引入

全部展开

R2020b的行为发生了变化