主要内容

无味卡尔曼滤波

估计使用无味卡尔曼滤波器的离散时间非线性系统

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

    系统辨识工具箱/估计

  • ukf_block

描述

的<年代pan class="block">无味卡尔曼滤波块离散时间非线性系统的状态估计使用离散时间无味卡尔曼滤波算法。

考虑植物与状态x、输入u、输出y、过程噪声w和测量噪声v。假设您能代表植物作为非线性系统。

使用状态转换和测量系统的功能和无味卡尔曼滤波算法,块生产状态估计<年代pan class="inlineequation"> x ^ 针对当前时间步长。关于算法的信息,请参阅扩展和无味卡尔曼滤波算法在线状态估计

您创建的非线性系统状态转换函数和测量功能,并指定这些功能块。块支持系统的状态估计金宝app与多个传感器,操作在不同的采样率。您可以指定五测量功能,每个对应一个传感器系统。有关更多信息,请参见状态转换和测量功能

港口

输入

全部展开

测量系统输出对应于每个测量函数中指定块。港口的数量等于测量功能在你系统的数量。您可以指定五测量功能。例如,如果你的系统有两个传感器,您指定两个测量功能块。第一个港口<年代trong class="guilabel">日元在默认情况下是可用的。当你点击<年代trong class="guibutton">应用,软件生成端口<年代trong class="guilabel">y2对应于第二测量功能。

指定的端口N维向量,N是数量的数量来衡量相应的传感器。例如,如果你的系统有一个传感器,测量一个物体的位置和速度,然后只有一个端口<年代trong class="guilabel">日元。港口被指定为一个二维向量的值对应的位置和速度。

依赖关系

第一个港口<年代trong class="guilabel">日元在默认情况下是可用的。港口<年代trong class="guilabel">y2来<年代trong class="guilabel">日元当你点击生成<年代trong class="guilabel">添加测量,然后单击<年代trong class="guibutton">应用。

数据类型:|

额外的可选的输入参数状态转换函数f以外的国家x和过程噪声w。信息状态转换功能看,状态转换和测量功能

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

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

在这里k是时间步,StateTransitionFcnInputs一个额外的输入参数是xw

如果您创建f使用MATLAB<年代up>®函数(。米文件),软件生成端口<年代trong class="guilabel">StateTransitionFcnInputs当你点击<年代trong class="guibutton">应用。您可以指定输入这个端口是一个标量,矢量、矩阵。

如果你的状态转换函数有多个额外的输入,使用金宝app仿真软件的功能(金宝app模型)块指定函数。当你使用<年代pan class="block">金宝app仿真软件的功能块,直接向你提供额外的输入<年代pan class="block">金宝app仿真软件的功能块使用轮廓尺寸(金宝app模型)块。没有输入端口生成的额外输入的<年代pan class="block">无味卡尔曼滤波块。

依赖关系

这个端口生成只有在满足以下两个条件:

  • 你指定f在<年代trong class="guilabel">函数使用MATLAB函数f在MATLAB的道路。

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

数据类型:|

额外的可选输入测量功能以外的其他国家x和测量噪声v。信息测量功能看,状态转换和测量功能

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

y1 [k] = h1 (x [k], [k], MeasurementFcn1Inputs)

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

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

在这里k是时间步,MeasurementFcn1InputsMeasurementFcn2Inputs额外的输入参数吗h1h2

如果您指定h1,h2,h3使用MATLAB函数(。米文件)<年代trong class="guilabel">函数,软件生成港口<年代trong class="guilabel">MeasurementFcn1Inputs和<年代trong class="guilabel">MeasurementFcn2Inputs当你点击<年代trong class="guibutton">应用。您可以指定这些端口的输入标量、向量或矩阵。

如果你有不止一个额外的输入测量功能,使用金宝app仿真软件的功能(金宝app模型)块指定功能。当你使用<年代pan class="block">金宝app仿真软件的功能块,直接向你提供额外的输入<年代pan class="block">金宝app仿真软件的功能块使用轮廓尺寸(金宝app模型)块。没有输入端口生成的额外输入的<年代pan class="block">无味卡尔曼滤波块。

依赖关系

一个端口对应的测量功能h只有在生成满足下面两个条件:

  • 你指定h在<年代trong class="guilabel">函数使用MATLAB函数h在MATLAB的道路。

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

数据类型:|

时变过程噪声协方差,指定为一个标量,矢量,根据的价值或矩阵<年代trong class="guilabel">过程噪声参数:

  • 过程噪声添加剂——协方差指定为一个标量Ns元向量,或一个Ns——- - - - - -Ns矩阵,Ns是系统的状态数。指定一个标量如果之间没有互相关处理噪音方面,和所有条款都有相同的方差。指定一个向量的长度Ns,如果没有工序间互相关噪声项,但是所有的条款有不同的差异。

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

依赖关系

这个端口如果指定生成过程噪声协方差<年代trong class="guilabel">时变。港口出现当你点击<年代trong class="guibutton">应用。

数据类型:|

时变测量噪声协方差5测量系统的功能,指定为矩阵。矩阵的大小依赖的价值<年代trong class="guilabel">测量噪声参数对应的测量功能:

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

  • 测量噪声非相加——指定的协方差V——- - - - - -V矩阵,V是测量噪声的数量条款在相应的测量功能。

依赖关系

生成一个港口如果指定测量噪声协方差<年代trong class="guilabel">时变相应的测量功能。港口出现当你点击<年代trong class="guibutton">应用。

数据类型:|

假设测量输出数据不可用港口的时间点<年代trong class="guilabel">日元对应于第一个测量功能。使用价值以外的一个信号0在<年代trong class="guilabel">Enable1端口,使估计的修正状态时测量数据是可用的。指定端口值0当测量数据是不可用的。类似地,如果测量输出数据不可用港口的时间点<年代trong class="guilabel">y我<年代up>th测量函数,指定相应的端口<年代trong class="guilabel">启用除了作为一个值0

依赖关系

一个端口对应一个测量函数生成,如果你选择<年代trong class="guilabel">添加启用端口测量功能。港口出现当你点击<年代trong class="guibutton">应用。

数据类型:||布尔

输出

全部展开

估计状态,作为一个向量返回的大小Ns,在那里Ns是系统的状态数。访问各州,使用选择器(金宝app模型)块。

当<年代trong class="guilabel">使用电流测量提高状态估计参数被选中时,块输出修正状态估计<年代pan class="inlineequation"> x ^ ( k | k ] 在时间步k直到时间估计,使用测量输出k。如果你清楚这个参数,预测块返回状态估计<年代pan class="inlineequation"> x ^ ( k | k 1 ] 时间k估计,使用测量输出,直到前一个时间k - 1。明确该参数如果你的过滤器是一个反馈回路,一个代数循环在你的模型金宝app<年代up>®模型。

数据类型:|

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

依赖关系

如果您选择生成这个端口<年代trong class="guilabel">输出状态估计误差协方差在<年代trong class="guilabel">系统模型选项卡,并单击<年代trong class="guibutton">应用。

数据类型:|

参数

全部展开

系统模型选项卡

状态转换

状态转换函数计算Ns在时间步元系统的状态向量k+ 1,给定的时间步的状态向量kNs是非线性系统的状态数。您创建状态转换函数和指定的函数名<年代trong class="guilabel">函数。例如,如果vdpStateFcn.m是你创建并保存状态转换函数,指定吗<年代trong class="guilabel">函数作为vdpStateFcn

您创建的输入函数取决于您指定的过程噪声作为添加剂或非相加<年代trong class="guilabel">过程噪声。

  • 过程噪声添加剂——状态转换函数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))

    软件生成一个额外的输入端口<年代trong class="guilabel">StateTransitionFcnInputs指定这个参数。

  • 如果您使用的是<年代pan class="block">金宝app仿真软件的功能块,指定xw使用参数尺寸。(金宝app模型)块和额外的输入Us1,…, Usn使用轮廓尺寸(金宝app模型)块的<年代pan class="block">金宝app仿真软件的功能块。你不提供Us1,…, Usn到<年代pan class="block">无味卡尔曼滤波块。

编程使用

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

过程噪声特点,指定为以下值之一:

  • 添加剂——过程噪声w添加剂,状态转换函数f你指定的<年代trong class="guilabel">函数有以下形式:

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

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

  • 非相加过程噪声非相加,状态转换函数指定美国如何演变的功能状态<年代pan class="emphasis">过程噪声在前面的时间步骤:

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

编程使用

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

定常过程噪声协方差,指定为一个标量,矢量,根据的价值或矩阵<年代trong class="guilabel">过程噪声参数:

  • 过程噪声添加剂——协方差指定为一个标量Ns元向量,或一个Ns——- - - - - -Ns矩阵,Ns是系统的状态数。指定一个标量如果之间没有互相关处理噪音条款和所有条款都有相同的方差。指定一个向量的长度Ns,如果没有工序间互相关噪声术语,但所有的术语有不同的差异。

  • 过程噪声非相加——指定的协方差W——- - - - - -W矩阵,W是过程噪声的数量条款。

如果这个过程噪声协方差时变,选择<年代trong class="guilabel">时变。块生成的输入端口<年代trong class="guilabel">问指定时变协方差。

依赖关系

这个参数启用了如果你不指定过程噪声<年代trong class="guilabel">时变。

编程使用

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

如果您选择这个参数,块包含一个额外的输入端口<年代trong class="guilabel">问指定时变过程噪声协方差。

编程使用

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

初始状态估计的价值,作为一个指定Ns元向量,Ns在系统的状态数。指定初始状态值根据您的系统的知识。

编程使用

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

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

指定一个高价值的协方差当你没有信心在您指定的初始状态值<年代trong class="guilabel">初始状态。

编程使用

块参数:InitialStateCovariance
类型:特征向量,字符串
默认值:' 1 '
无香味的转换参数

无味卡尔曼滤波算法对系统状态的状态作为一个随机变量的平均值和方差。状态及其统计特性计算的下一个时间步,状态值的算法首先生成一组分布在均值通过使用无味的转换。这些生成的状态被称为σ值点。算法使用的每一个西格玛点作为输入状态转换和测量函数得到一套新的转换状态点和测量。转换后的点是用来计算状态和状态估计误差协方差值下一个时间步。

σ点周围的传播状态的平均值由两个参数控制<年代trong class="guilabel">α和<年代trong class="guilabel">卡巴。第三个参数,<年代trong class="guilabel">β期间,影响权重的转变点状态和测量的协方差的计算:

  • α——决定了σ的传播分国家的平均值。指定作为一个标量值在0和1之间(0<<年代trong class="guilabel">α< =1)。它通常是一个小的积极价值。σ的扩散点成正比<年代trong class="guilabel">α。较小的值对应于σ点接近平均状态。

  • 卡巴——第二个尺度参数,通常设置为0。较小的值对应于σ点接近平均状态。√(成正比卡巴

  • β——结合先验知识的分布状态。为高斯分布,<年代trong class="guilabel">β= 2是最优的。

如果你知道协方差的分布状态和状态,您可以调整这些参数获取的高阶时刻分布的变换。可以跟踪的算法只有一个峰值的概率分布状态。如果有多个峰值状态分布的系统,您可以调整这些参数σ点保持在一个高峰。例如,选择一个小的<年代trong class="guilabel">α生成σ点接近国家的平均值。

有关更多信息,请参见无味卡尔曼滤波算法

编程使用

块参数:α
类型:特征向量,字符串
默认值:“1 e - 3”

描述的状态分布,用于调整权重的改变了σ点,指定为一个标量值大于或等于0。为高斯分布,β= 2是最优选择。

有关更多信息,请参见描述<年代trong class="guilabel">α。

编程使用

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

σ点周围传播意味着状态值,指定为一个标量值介于0和3 (0< =<年代trong class="guilabel">卡巴< =3)。<年代trong class="guilabel">卡巴通常指定为0。较小的值对应于σ点接近平均状态。传播的平方根成正比<年代trong class="guilabel">卡巴。有关更多信息,请参见描述<年代trong class="guilabel">α。

编程使用

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

测量函数计算N有效输出测量向量的非线性系统在时间步k,鉴于时间步的状态向量k。您创建的测量功能和指定的函数名<年代trong class="guilabel">函数。例如,如果vdpMeasurementFcn.m是你创建并保存测量函数,指定吗<年代trong class="guilabel">函数作为vdpMeasurementFcn

您创建的输入函数取决于您指定的测量噪声作为添加剂或非相加<年代trong class="guilabel">测量噪声。

  • 测量噪声添加剂——测量功能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))

    软件生成一个额外的输入端口<年代trong class="guilabel">MeasurementFcnInput指定这个参数。

  • 如果您使用的是<年代pan class="block">金宝app仿真软件的功能块,指定xv使用参数尺寸。(金宝app模型)块和额外的输入听Um1,…,学院使用轮廓尺寸(金宝app模型)块的<年代pan class="block">金宝app仿真软件的功能块。你不提供听Um1,…,学院到<年代pan class="block">无味卡尔曼滤波块。

如果您有多个传感器在你的系统中,您可以指定多个测量功能。您可以指定使用五个测量功能<年代trong class="guilabel">添加测量按钮。删除测量功能,使用<年代trong class="guilabel">删除测量。

编程使用

块参数:MeasurementFcn1,MeasurementFcn2,MeasurementFcn3,MeasurementFcn4,MeasurementFcn5
类型:特征向量,字符串
默认值:“myMeasurementFcn”

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

  • 添加剂——测量噪声v添加剂,测量功能h你指定的<年代trong class="guilabel">函数有以下形式:

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

    在哪里y (k)x (k)这是估计的输出和估计状态时间吗k,听Um1,…,学院是你需要的任何可选的输入参数测量功能。

  • 非相加——测量噪声非相加,测量函数指定了如何输出测量的发展状态的函数<年代pan class="emphasis">测量噪声:

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

编程使用

块参数:HasAdditiveMeasurementNoise1,HasAdditiveMeasurementNoise2,HasAdditiveMeasurementNoise3,HasAdditiveMeasurementNoise4,HasAdditiveMeasurementNoise5
类型:特征向量
价值观:“添加剂”,“非相加”
默认值:“添加剂”

定常测量噪声协方差,指定为一个矩阵。矩阵的大小取决于的价值<年代trong class="guilabel">测量噪声参数:

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

  • 测量噪声非相加——指定的协方差V——- - - - - -V矩阵,V是测量噪声的数量条款。

如果测量噪声协方差时变,选择<年代trong class="guilabel">时变。块生成的输入端口<年代trong class="guilabel">R指定的时变协方差我<年代up>th测量功能。

依赖关系

这个参数启用了如果你不指定过程噪声<年代trong class="guilabel">时变。

编程使用

块参数:MeasurementNoise1,MeasurementNoise2,MeasurementNoise3,MeasurementNoise4,MeasurementNoise5
类型:特征向量,字符串
默认值:' 1 '

如果您选择该参数的测量噪声协方差第一测量功能,块包含一个额外的输入端口<年代trong class="guilabel">R1。你指定的时变测量噪声协方差<年代trong class="guilabel">R1。同样的,如果你选择<年代trong class="guilabel">时变为我<年代up>th测量功能,块包含一个额外的输入端口<年代trong class="guilabel">R指定的时变测量噪声协方差函数。

编程使用

块参数:HasTimeVaryingMeasurementNoise1,HasTimeVaryingMeasurementNoise2,HasTimeVaryingMeasurementNoise3,HasTimeVaryingMeasurementNoise4,HasTimeVaryingMeasurementNoise5
类型:特征向量
价值观:“关闭”,“上”
默认值:“关闭”

假设测量输出数据不可用港口的时间点<年代trong class="guilabel">日元对应于第一个测量功能。选择<年代trong class="guilabel">添加启用端口生成一个输入端口<年代trong class="guilabel">Enable1。在这个端口使用一个信号使估计状态的调整只有当测量数据是可用的。类似地,如果测量输出数据不可用港口的时间点<年代trong class="guilabel">y我<年代up>th测量功能,选择相应的<年代trong class="guilabel">添加启用端口。

编程使用

块参数:HasMeasurementEnablePort1,HasMeasurementEnablePort2,HasMeasurementEnablePort3,HasMeasurementEnablePort4,HasMeasurementEnablePort5
类型:特征向量
价值观:“关闭”,“上”
默认值:“关闭”
设置

这个参数被选中时,块输出修正状态估计<年代pan class="inlineequation"> x ^ ( k | k ] 在时间步k直到时间估计,使用测量输出k。如果你清楚这个参数,预测块返回状态估计<年代pan class="inlineequation"> x ^ ( k | k 1 ] 时间k估计,使用测量输出,直到前一个时间k - 1。明确该参数如果你的过滤器是一个反馈回路和有一个代数环仿真软件模型。金宝app

编程使用

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

如果您选择这个参数,状态估计误差协方差输出端口<年代trong class="guilabel">P生成的块。

编程使用

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

使用这个参数来指定所有块参数的数据类型。

编程使用

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

块样品时间,指定为一个积极的标量。如果样品状态转换的时光和测量功能是不同的,选择<年代trong class="guilabel">使多重速率的操作在<年代trong class="guilabel">多重速率的选项卡,指定样例次<年代trong class="guilabel">多重速率的选项卡。

依赖关系

如果在这个参数是可用的<年代trong class="guilabel">多重速率的选项卡,<年代trong class="guilabel">使多重速率的操作参数是

编程使用

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

多重速率的选项卡

选择该参数如果样品的状态转换和测量功能是不同的。你指定的样例次<年代trong class="guilabel">多重速率的选项卡,在<年代trong class="guilabel">样品时间。

编程使用

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

如果样品时间状态转换和测量功能是不同的,指定<年代trong class="guilabel">样品时间。指定样品时间测量功能正整数倍数的状态转换样品时间。您所指定的样品时间对应于以下输入端口:

  • 端口对应的状态转换函数——额外的输入状态转换函数<年代trong class="guilabel">StateTransitionFcnInputs和时变过程噪声协方差<年代trong class="guilabel">问。这些端口的样品时间必须始终等于状态转换时间样本函数,但可以从样本不同时间的测量功能。

  • 相对应的端口我<年代up>th测量功能,测量输出<年代trong class="guilabel">y额外的输入,测量功能<年代trong class="guilabel">MeasurementFcn输入港,使信号<年代trong class="guilabel">启用和时变测量噪声协方差<年代trong class="guilabel">R。这些端口的样品时间为同一测量函数必须是相同的,但不同于样品时间状态转换函数和其他测量功能。

依赖关系

如果在这个参数是可用的<年代trong class="guilabel">多重速率的选项卡,<年代trong class="guilabel">使多重速率的操作参数是

编程使用

块参数:StateTransitionFcnSampleTime,MeasurementFcn1SampleTime1,MeasurementFcn1SampleTime2,MeasurementFcn1SampleTime3,MeasurementFcn1SampleTime4,MeasurementFcn1SampleTime5
类型:特征向量,字符串
默认值:' 1 '

更多关于

全部展开

兼容性的考虑

全部展开

行为改变R2020b

扩展功能

另请参阅

功能

  • |<年代pan itemscope itemtype="//www.tatmou.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">|<年代pan itemscope itemtype="//www.tatmou.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">|<年代pan itemscope itemtype="//www.tatmou.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">|<年代pan itemscope itemtype="//www.tatmou.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">
介绍了R2017a