无味卡尔曼滤波器
用无味卡尔曼滤波估计离散非线性系统的状态
库:
控制系统工具箱/状态估计
系统识别工具箱/估计器
描述
的<年代pan class="block">无味卡尔曼滤波器块估计离散非线性系统的状态使用离散无味卡尔曼滤波算法。
考虑一个有状态的工厂x、输入u、输出y,过程噪声w,测量噪声v.假设你可以把植物表示成一个非线性系统。
利用系统的状态转换和测量功能以及无气味卡尔曼滤波算法,该块产生状态估计<年代pan class="inlineequation"> 为当前时间步长。有关算法的信息,请参见在线状态估计的扩展和Unscented卡尔曼滤波算法.
您为系统创建非线性状态转换函数和测量函数,并在块中指定这些函数。该块支持具有多个以不金宝app同采样率运行的传感器的系统的状态估计。您最多可以指定五个测量功能,每个功能对应于系统中的一个传感器。有关更多信息,请参见状态转换和测量函数.
例子
港口
输入
y1、y2、y3、y4,日元- - - - - -<年代pan class="remove_bold">测量系统输出
向量
测量系统输出对应于您在块中指定的每个测量函数。端口的数量等于系统中测量函数的数量。您最多可以指定五个测量函数。例如,如果系统有两个传感器,则在块中指定两个测量函数。第一个端口<年代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">应用.
数据类型:单
|双
StateTransitionFcnInputs- - - - - -<年代pan class="remove_bold">状态转换函数的额外可选输入参数
标量|向量|矩阵
状态转换函数的额外可选输入参数f
除了国家x
以及过程噪声w
.有关状态转移函数的信息,请参见,状态转换和测量函数.
假设你的系统有非加性的过程噪声和状态转换函数f
具有以下形式:
x(k+1) = f(x(k),w(k),StateTransitionFcnInputs)
.
在这里k
是时间步长,和StateTransitionFcnInputs
是否有其他输入参数x
而且w
.
如果你创建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
只需要一个额外的输入参数x
而且w
.
数据类型:单
|双
MeasurementFcn1Inputs、MeasurementFcn2Inputs MeasurementFcn3Inputs、MeasurementFcn4Inputs MeasurementFcn5Inputs- - - - - -<年代pan class="remove_bold">每个测量函数的额外可选输入参数
标量|向量|矩阵
对状态以外的测量函数的其他可选输入x
测量噪声v
.有关测量函数的信息,请参见状态转换和测量函数.
MeasurementFcn1Inputs对应于您指定的第一个测量函数,等等。例如,假设您的系统有三个传感器和非相加的测量噪声,以及三个测量函数h1
,h2
,h3
有以下表格:
y1[k] = h1(x[k],v[k],测量fcn1inputs)
y2[k] = h2(x[k],v[k],测量fcn2input)
Y3 [k] = h3(x[k],v[k])
在这里k
是时间步长,和MeasurementFcn1Inputs
而且MeasurementFcn2Inputs
附加的输入参数是h1
而且h2
.
如果你指定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
只需要一个额外的输入参数x
而且v
.
数据类型:单
|双
问- - - - - -<年代pan class="remove_bold">时变过程噪声协方差
标量|向量|矩阵
项的值指定为标量、向量或矩阵的时变过程噪声协方差<年代trong class="guilabel">过程噪声参数:
过程噪声是
添加剂
-将协方差指定为标量Ns-element vector或anNs——- - - - - -Ns矩阵,Ns是系统的状态数。如果过程噪声项之间没有相互关联,并且所有项具有相同的方差,则指定标量。指定长度向量Ns,如果过程噪声项之间不存在相互关联,但各项的方差不同。过程噪声是
非相加
-指定协方差为aW——- - - - - -W矩阵,W是状态转换函数中过程噪声项的个数。
依赖关系
如果您将过程噪声协方差指定为,则会生成此端口<年代trong class="guilabel">时变.单击时将显示端口<年代trong class="guibutton">应用.
数据类型:单
|双
R1、R2、R3、R4 R5- - - - - -<年代pan class="remove_bold">时变测量噪声协方差
矩阵
系统最多5个测量函数的时变测量噪声协方差,指定为矩阵。的值决定矩阵的大小<年代trong class="guilabel">测量噪声对应测量函数参数:
测量噪声是
添加剂
-指定协方差为anN——- - - - - -N矩阵,N是系统的测量次数。测量噪声是
非相加
-指定协方差为aV——- - - - - -V矩阵,V是对应测量函数中测量噪声项的个数。
依赖关系
如果指定测量噪声协方差为,则生成端口<年代trong class="guilabel">时变对应的测量函数。单击时将显示端口<年代trong class="guibutton">应用.
数据类型:单
|双
Enable1、Enable2 Enable3、Enable4 Enable5- - - - - -<年代pan class="remove_bold">当测量数据可用时,启用估计状态的修正
标量
假设测量的输出数据在端口上的所有时间点都不可用<年代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">应用.
数据类型:单
|双
|布尔
输出
xhat- - - - - -<年代pan class="remove_bold">估计状态
向量
估计的状态,作为大小向量返回Ns,在那里Ns是系统的状态数。要访问各个状态,请使用选择器(金宝app模型)块。
当<年代trong class="guilabel">使用当前测量来改进状态估计参数时,块输出修正后的状态估计<年代pan class="inlineequation">
时间步长k
,估计使用测量输出直到时间k
.如果清除此参数,块将返回预测的状态估计<年代pan class="inlineequation">
时间k
,使用测量到的输出直到前一个时间估计k - 1
.如果过滤器处于反馈循环中,并且在Simulink模型中存在代数循环,则清除此参数。金宝app
数据类型:单
|双
P- - - - - -<年代pan class="remove_bold">状态估计误差协方差
矩阵
状态估计误差协方差,返回为Ns——- - - - - -Ns矩阵,Ns是系统的状态数。要访问个别协方差,请使用选择器(金宝app模型)块。
依赖关系
如果选择,则生成该端口<年代trong class="guilabel">输出状态估计误差协方差在<年代trong class="guilabel">系统模型选项卡,单击<年代trong class="guibutton">应用.
数据类型:单
|双
参数
系统模型页
状态转换函数- - - - - -<年代pan class="remove_bold">状态转换函数名称
myStateTransitionFcn
(默认)|函数名
状态转换函数计算Ns-系统在时间步长的元素状态向量k+1,给定时间步长的状态向量k.Ns是非线性系统的状态数。中创建状态转换函数并指定函数名<年代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
除了x
而且w
.x(k+1) = f(x(k) w(k) Us1(k))
软件生成一个额外的输入端口<年代trong class="guilabel">StateTransitionFcnInputs指定此参数。
如果你正在使用<年代pan class="block">金宝app仿真软件的功能块,指定
x
而且w
使用参数尺寸。(金宝app模型)块和额外的输入Us1,…,Usn
使用轮廓尺寸(金宝app模型)块的<年代pan class="block">金宝app仿真软件的功能块。你没有提供Us1,…,Usn
到<年代pan class="block">无味卡尔曼滤波器块。
编程使用
块参数:StateTransitionFcn |
类型:字符向量,字符串 |
默认值:“myStateTransitionFcn” |
过程噪声- - - - - -<年代pan class="remove_bold">过程噪声特性
添加剂
(默认)|非相加
过程噪声特性,指定为以下值之一:
添加剂
-过程噪声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 |
类型:特征向量 |
价值观:“添加剂” ,“非相加” |
默认值:“添加剂” |
协方差- - - - - -<年代pan class="remove_bold">定常过程噪声协方差
1
(默认)|标量|向量|矩阵
的值指定为标量、向量或矩阵的时不变过程噪声协方差<年代trong class="guilabel">过程噪声参数:
过程噪声是
添加剂
-将协方差指定为标量Ns-element vector或anNs——- - - - - -Ns矩阵,Ns是系统的状态数。如果过程噪声项之间没有相互关联且所有项的方差相同,则指定标量。指定长度向量Ns,如果过程噪声项之间不存在交叉相关,但各项的方差不同,则为。过程噪声是
非相加
-指定协方差为aW——- - - - - -W矩阵,W是过程噪声项的个数。
如果过程噪声协方差随时间变化,则选择<年代trong class="guilabel">时变.块生成输入端口<年代trong class="guilabel">问要指定时变协方差。
依赖关系
如果不指定进程噪声为,则启用此参数<年代trong class="guilabel">时变.
编程使用
块参数:ProcessNoise |
类型:字符向量,字符串 |
默认值:' 1 ' |
时变- - - - - -<年代pan class="remove_bold">时变过程噪声协方差
“关闭”
(默认)|“上”
如果选择此参数,则块包含一个额外的输入端口<年代trong class="guilabel">问指定随时间变化的过程噪声协方差。
编程使用
块参数:HasTimeVaryingProcessNoise |
类型:特征向量 |
价值观:“关闭” ,“上” |
默认值:“关闭” |
初始状态- - - - - -<年代pan class="remove_bold">初始状态估计
0
(默认)|向量
初始状态估计值,指定为Ns-element vector,其中Ns是系统的状态数。根据您对系统的了解指定初始状态值。
编程使用
块参数:InitialState |
类型:字符向量,字符串 |
默认值:' 0 ' |
最初的协方差- - - - - -<年代pan class="remove_bold">状态估计误差协方差
1
(默认)|标量|向量|矩阵
状态估计误差协方差,指定为一个标量Ns-element vector或anNs——- - - - - -Ns矩阵,Ns是系统的状态数。如果您指定一个标量或向量,软件将创建一个Ns——- - - - - -Ns在对角线上有标量或矢量元素的对角线矩阵。
当您对指定的初始状态值没有置信度时,请为协方差指定一个较高的值<年代trong class="guilabel">初始状态.
编程使用
块参数:InitialStateCovariance |
类型:字符向量,字符串 |
默认值:' 1 ' |
α- - - - - -<年代pan class="remove_bold">点的扩散
1 e - 3
(默认)| 0到1之间的标量值
无气味卡尔曼滤波算法将系统的状态视为具有平均状态值和方差的随机变量。为了计算下一个时间步的状态及其统计特性,算法首先通过无气味变换生成一组分布在平均值周围的状态值。这些生成的状态值称为sigma点。该算法使用每个sigma点作为状态转换和测量函数的输入,以获得一组新的转换状态点和测量值。转换后的点用于计算下一个时间步的状态和状态估计误差协方差值。
围绕平均状态值的西格玛点的扩展由两个参数控制<年代trong class="guilabel">α而且<年代trong class="guilabel">卡巴.第三个参数,<年代trong class="guilabel">β,在状态和测量协方差计算时影响转换点的权重:
α-确定平均状态值周围的西格玛点的分布。指定为0到1之间的标量值(
0
<<年代trong class="guilabel">α< =1
).它通常是一个很小的正值。点的分布与<年代trong class="guilabel">α.较小的值对应于更接近平均状态的sigma点。卡巴—第二个缩放参数,通常设置为0。较小的值对应于更接近平均状态的sigma点。的平方根成正比
卡巴
.β-整合状态分布的先验知识。对于高斯分布,<年代trong class="guilabel">β= 2是最佳的。
如果你知道状态和状态协方差的分布,你可以调整这些参数来捕捉分布的高阶矩的变换。该算法只能跟踪状态概率分布中的一个峰值。如果系统的状态分布中有多个峰值,则可以调整这些参数,使sigma点保持在单个峰值附近。例如,选择一个小的<年代trong class="guilabel">α生成接近平均状态值的sigma点。
有关更多信息,请参见无味卡尔曼滤波算法.
编程使用
块参数:α |
类型:字符向量,字符串 |
默认值:“1 e - 3” |
β- - - - - -<年代pan class="remove_bold">状态分布的表征
2
(默认)|标量值大于等于0
状态分布的描述,用于调整转换后的西格玛点的权重,指定为大于或等于0的标量值。对于高斯分布,β
= 2是最优选择。
有关详细信息,请参见<年代trong class="guilabel">α.
编程使用
块参数:β |
类型:字符向量,字符串 |
默认值:' 2 ' |
卡巴- - - - - -<年代pan class="remove_bold">点的扩散
0
(默认)| 0到3之间的标量值
在平均状态值附近的西格玛点分布,指定为0到3之间的标量值(0
< =<年代trong class="guilabel">卡巴< =3.
).<年代trong class="guilabel">卡巴通常指定为0
.较小的值对应于更接近平均状态的sigma点。价差与平方根成正比<年代trong class="guilabel">卡巴.有关详细信息,请参见<年代trong class="guilabel">α.
编程使用
块参数:卡巴 |
类型:字符向量,字符串 |
默认值:' 0 ' |
函数- - - - - -<年代pan class="remove_bold">测量函数名称
myMeasurementFcn
(默认)|函数名
测量函数计算N-非线性系统在时间步长的单元输出测量向量k,给定时间步长的状态向量k.中创建度量函数并指定函数名<年代trong class="guilabel">函数.例如,如果vdpMeasurementFcn.m
您创建并保存的测量函数是否指定<年代trong class="guilabel">函数作为vdpMeasurementFcn
.
所创建函数的输入取决于将测量噪声指定为添加性或非添加性<年代trong class="guilabel">测量噪声.
测量噪声是
添加剂
-测量功能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))
软件生成一个额外的输入端口<年代trong class="guilabel">MeasurementFcnInput指定此参数。
如果你正在使用<年代pan class="block">金宝app仿真软件的功能块,指定
x
而且v
使用参数尺寸。(金宝app模型)块和额外的输入听Um1,…,学院
使用轮廓尺寸(金宝app模型)块的<年代pan class="block">金宝app仿真软件的功能块。你没有提供听Um1,…,学院
到<年代pan class="block">无味卡尔曼滤波器块。
如果您的系统中有多个传感器,您可以指定多个测量功能。属性最多可以指定五个度量函数<年代trong class="guilabel">添加测量按钮。若要删除测量函数,请使用<年代trong class="guilabel">删除测量.
编程使用
块参数:MeasurementFcn1 ,MeasurementFcn2 ,MeasurementFcn3 ,MeasurementFcn4 ,MeasurementFcn5 |
类型:字符向量,字符串 |
默认值:“myMeasurementFcn” |
测量噪声- - - - - -<年代pan class="remove_bold">测量噪声特性
添加剂
(默认)|非相加
测量噪声特性,指定为以下值之一:
添加剂
-测量噪声v
是加法,还是测量函数h你指定的<年代trong class="guilabel">函数具有以下形式:y(k) = h(x(k),Um1(k),…,Umn(k))
,在哪里
y (k)
而且x (k)
估计的输出和估计的状态是否及时k
,听Um1,…,学院
测量函数所需的任何可选输入参数。非相加
-测量噪声是非可加性的,测量函数指定输出测量如何作为状态的函数演变<年代pan class="emphasis">而且测量噪声:y(k) = h(x(k),v(k),Um1(k),…,Umn(k))
.
编程使用
块参数:HasAdditiveMeasurementNoise1 ,HasAdditiveMeasurementNoise2 ,HasAdditiveMeasurementNoise3 ,HasAdditiveMeasurementNoise4 ,HasAdditiveMeasurementNoise5 |
类型:特征向量 |
价值观:“添加剂” ,“非相加” |
默认值:“添加剂” |
有测量包装- - - - - -<年代pan class="remove_bold">启用测量包装
从
(默认)|在
选择此参数,当您拥有独立于模型状态的循环测量时,可以启用测量包装来估计状态。如果选择此参数,则指定的测量函数必须包含以下两个输出:
测量,用a表示<年代pan class="emphasis">N-非线性系统在时间步长的单元输出测量向量<年代pan class="emphasis">k,给定时间步长的状态向量<年代pan class="emphasis">k.<年代pan class="emphasis">N是系统的测量次数。
度量包裹边界,指定为<年代pan class="emphasis">N——- - - - - -
2
其中,第一列提供最小测量界,第二列提供最大测量界。
使<年代trong class="emphasis bold">有测量包装复选框将测量残差包装在定义的范围内,这有助于防止由于不正确的测量残差值而导致滤波器发散。有关示例,请参见使用扩展卡尔曼滤波器的包裹测量状态估计.
编程使用
块参数:HasMeasurementWrapping1 ,HasMeasurementWrapping2 ,HasMeasurementWrapping3 ,HasMeasurementWrapping4 ,HasMeasurementWrapping5 |
类型:特征向量 |
价值观:“关闭” ,“上” |
默认值:“关闭” |
协方差- - - - - -<年代pan class="remove_bold">时不变测量噪声协方差
1
(默认)|矩阵
时不变测量噪声协方差,指定为矩阵。的值决定了矩阵的大小<年代trong class="guilabel">测量噪声参数:
测量噪声是
添加剂
-指定协方差为anN——- - - - - -N矩阵,N是系统的测量次数。测量噪声是
非相加
-指定协方差为aV——- - - - - -V矩阵,V是测量噪声项的个数。
如果测量噪声协方差是时变的,选择<年代trong class="guilabel">时变.块生成输入端口<年代trong class="guilabel">R我
的时变协方差我<年代up>th测量功能。
依赖关系
如果不指定进程噪声为,则启用此参数<年代trong class="guilabel">时变.
编程使用
块参数:MeasurementNoise1 ,MeasurementNoise2 ,MeasurementNoise3 ,MeasurementNoise4 ,MeasurementNoise5 |
类型:字符向量,字符串 |
默认值:' 1 ' |
时变- - - - - -<年代pan class="remove_bold">时变测量噪声协方差
从
(默认)|在
如果为第一个测量函数的测量噪声协方差选择此参数,则该块包含一个额外的输入端口<年代trong class="guilabel">R1.中指定随时间变化的测量噪声协方差<年代trong class="guilabel">R1.类似地,如果您选择<年代trong class="guilabel">时变为我<年代up>th测量功能,该块包括一个额外的输入端口<年代trong class="guilabel">R我
指定该函数的时变测量噪声协方差。
编程使用
块参数:HasTimeVaryingMeasurementNoise1 ,HasTimeVaryingMeasurementNoise2 ,HasTimeVaryingMeasurementNoise3 ,HasTimeVaryingMeasurementNoise4 ,HasTimeVaryingMeasurementNoise5 |
类型:特征向量 |
价值观:“关闭” ,“上” |
默认值:“关闭” |
添加启用端口- - - - - -<年代pan class="remove_bold">只有当测量数据可用时,才启用估计状态的修正
从
(默认)|在
假设测量的输出数据在端口上的所有时间点都不可用<年代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="remove_bold">在校正或预测状态估计之间选择
在
(默认)|从
当选择此参数时,块输出修正后的状态估计<年代pan class="inlineequation">
时间步长k
,估计使用测量输出直到时间k
.如果清除此参数,块将返回预测的状态估计<年代pan class="inlineequation">
时间k
,使用测量到的输出直到前一个时间估计k - 1
.如果过滤器处于反馈循环中,并且在Simulink模型中存在代数循环,则清除此参数。金宝app
编程使用
块参数:UseCurrentEstimator |
类型:特征向量 |
价值观:“关闭” ,“上” |
默认值:“上” |
输出状态估计误差协方差- - - - - -<年代pan class="remove_bold">输出状态估计误差协方差
从
(默认)|在
如果选择此参数,则输出一个状态估计误差协方差端口<年代trong class="guilabel">P在块中生成。
编程使用
块参数:OutputStateCovariance |
类型:特征向量 |
价值观:“关闭” ,“上” |
默认值:“关闭” |
数据类型- - - - - -<年代pan class="remove_bold">块参数的数据类型
双
(默认)|单
使用此参数指定所有块参数的数据类型。
编程使用
块参数:数据类型 |
类型:特征向量 |
价值观:“单一” ,“双” |
默认值:“双” |
样品时间- - - - - -<年代pan class="remove_bold">分段采样时间
1
(默认)|正标量
块采样时间,指定为正标量。如果状态转换和测量函数的采样时间不同,请选择<年代trong class="guilabel">启用多速率操作在<年代trong class="guilabel">多重速率的选项卡中指定采样次数<年代trong class="guilabel">多重速率的选项卡。
依赖关系
时,此参数有效<年代trong class="guilabel">多重速率的选项卡,<年代trong class="guilabel">启用多速率操作参数是从
.
编程使用
块参数:SampleTime |
类型:字符向量,字符串 |
默认值:' 1 ' |
多重速率的选项卡
启用多速率操作- - - - - -<年代pan class="remove_bold">为状态转换和测量功能启用不同采样时间的规范
从
(默认)|在
当状态转换和测量函数的采样次数不同时,请选择此参数。中指定采样时间<年代trong class="guilabel">多重速率的选项卡,在<年代trong class="guilabel">样品时间.
编程使用
块参数:EnableMultirate |
类型:特征向量 |
价值观:“关闭” ,“上” |
默认值:“关闭” |
样品时间- - - - - -<年代pan class="remove_bold">状态转换和测量函数采样次数
积极的标量
如果状态转换和测量函数的采样时间不同,请指定<年代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 ' |
更多关于
状态转换和测量函数
该算法计算状态估计<年代pan class="inlineequation"> 利用你指定的状态转换和测量函数的非线性系统。您最多可以指定五个测量功能,每个功能对应于系统中的一个传感器。该软件允许您将这些函数中的噪声指定为加性或非加性。
附加噪声术语-状态转换和测量方程有如下形式:
在这里f是描述状态演化的非线性状态转移函数吗
x
从一个时间步骤到下一个。非线性测量函数h有关x
到测量y
时间步长k
.w
而且v
分别为零均值、不相关过程噪声和测量噪声。这些函数还可以有额外的可选输入参数,由u<年代ub>年代
而且u<年代ub>米
在方程中。例如,附加参数可以是时间步长k
或者输入u
对非线性系统。可以有多个这样的参数。注意,两个方程中的噪声项都是相加的。也就是说,
x (k + 1)
是否与过程噪声线性相关w (k)
,y (k)
是否与测量噪声线性相关v (k)
.对于附加噪声项,您不需要在状态转换和测量函数中指定噪声项。该软件将术语添加到函数的输出中。非加性噪声项该软件还支持更复杂的状态转换和测量功能金宝appx[k]和测量y[k]分别是过程噪声和测量噪声的非线性函数。当噪声项非加性时,状态转移与测量方程有如下形式:
扩展功能
C/ c++代码生成
使用Simulink®Coder™生成C和c++代码。金宝app
指定的状态转换和测量函数必须仅使用支持代码生成的MATLAB命令和Simulink块。金宝app金宝app有关支持代码生成的块的列表,请参见金宝app代码生成支持的金宝app块(金宝app仿真软件编码器).有关支持代码生成的命令列表,请参见金宝appC/ c++代码生成支持的函数和对象金宝app(MATLAB编码器).
所生成的代码使用的算法与所生成的算法不同<年代pan class="block">无味卡尔曼滤波器Block本身使用。在使用这两种方法获得的结果中,您可能会看到一些数值上的差异。
版本历史
在R2017a中引入R2020b:<年代pan class="remove_bold">数值的变化
从R2020b开始,数值改进<年代pan class="block">无味卡尔曼滤波器算法产生的结果可能与您在以前版本中获得的结果不同。
另请参阅
块
- 卡尔曼滤波器|<年代pan itemscope itemtype="//www.tatmou.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">扩展卡尔曼滤波器|<年代pan itemscope itemtype="//www.tatmou.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">粒子滤波
功能
extendedKalmanFilter
|<年代pan itemscope itemtype="//www.tatmou.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">unscentedKalmanFilter
|<年代pan itemscope itemtype="//www.tatmou.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">卡尔曼
|<年代pan itemscope itemtype="//www.tatmou.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">kalmd
|<年代pan itemscope itemtype="//www.tatmou.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">particleFilter
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入该命令来运行该命令。Web浏览器不支持MATLAB命令。金宝app
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。