用粒子滤波估计离散时间非线性系统的状态
控制系统工具箱/状态估计
系统识别工具箱/评估器
这粒子滤波块估计使用离散时间粒子滤波器算法的离散时间非线性系统的状态。
考虑一个有状态的植物X、输入你、输出m,过程噪声W.,测量y.假设你可以将植物表示为一个非线性系统。
算法计算状态估计 使用你指定的状态转移和测量似然函数的非线性系统。
你为系统创建非线性状态转移函数和测量似然函数,并在块中指定这些函数。该块支持以不同采样率万博1manbetx操作的多个传感器的系统状态估计。您可以指定多达5个测量似然函数,每个函数对应于系统中的一个传感器。
Y1,Y2,Y3,Y4,Y5
- 测量系统输出测量的系统输出对应于您在块中指定的每个测量似然函数。端口的数量等于系统中测量似然函数的数量。您可以指定多达5个测量似然函数。例如,如果系统有两个传感器,则在块中指定两个测量似然函数。第一个港口日元默认为可用。点击添加测量,生成端口y2对应于第二测量似然函数。
指定端口为N维向量,N是相应传感器测量的量数。例如,如果您的系统有一个测量对象的位置和速度的传感器,那么只有一个端口日元.端口被指定为一个二维矢量,其值对应于位置和速度。
第一个港口日元默认为可用。港口y2到日元单击时会生成添加测量.
StateTransitionFcnInputs
- 状态转换功能的可选输入参数状态转换函数的可选输入参数F
除了国家X
.
如果您创建F
使用MATLAB®函数(.m
文件),软件生成端口StateTransitionFcnInputs当您输入函数的名称时,并单击申请.
如果您的状态转换函数具有多个额外输入,请使用a万博1manbetxSimulink功能(万博1manbetxSimulink)块指定函数。当你使用的时候万博1manbetxSimulink功能块,您将额外的输入直接提供给万博1manbetxSimulink功能块使用轮廓尺寸(万博1manbetxSimulink)块。的附加输入不生成输入端口粒子滤波块。
满足以下两个条件时,才会生成该端口:
你指定F
在功能使用MATLAB函数,并F
在matlab路上。
F
除了粒子外,只需要一个额外的输入参数。
MeasurementLikelihoodFCN1Inputs,...,MeasurementLikelioieFCN5.Inputs
-每个测量可能性函数的可选输入参数测量似然函数的可选输入而不是状态X
和测量y
.
MeasurementLikelihoodFcn1Inputs对应于您指定的第一个测量似然函数等。
如果您使用MATLAB函数指定两个测量输入(.m
文件)在功能,软件生成端口MeasurementLikelihoodFcn1Inputs和MeasurementLikelihoodFcn2Inputs当你点击申请.您可以将这些端口的输入指定为标量,向量或矩阵。
如果测量似然函数有不止一个额外的输入,请使用万博1manbetxSimulink功能(万博1manbetxSimulink)块来指定函数。当你使用的时候万博1manbetxSimulink功能块,您将额外的输入直接提供给万博1manbetxSimulink功能块使用轮廓尺寸(万博1manbetxSimulink)块。的附加输入不生成输入端口粒子滤波块。
对应于测量似然函数的端口H
只有满足以下两个条件时才生成:
您指定测量输入H
在功能使用MATLAB函数,并H
在matlab路上。
H
除了粒子和测量外,只需要一个额外的输入参数。
Enable1、Enable2 Enable3、Enable4 Enable5
—当有测量数据时,允许对估计状态进行校正当测量数据可用时,可对估计状态进行校正。
例如,考虑到测量的输出数据不是在端口的所有时间点都可用的日元这对应于第一个测量似然函数。然后,使用一个信号值0.
在启用1.当测量数据可用时,以启用估计状态的端口。指定端口值为0.
没有测量数据时。类似地,如果测量的输出数据在港口的所有时间点都不可用y一世
为一世TH.测量似然函数,指定相应的端口使能够一世
作为一种价值0.
.
如果您选择添加启用端口对于测量似然函数,生成对应于该测量似然函数的端口。单击时,端口会出现申请.
xhat
——估计状态估计状态,返回为大小向量ns.,在那里ns.是系统的状态数。要访问个人状态,请使用选择器(万博1manbetxSimulink)块。
当使用当前测量来提高状态估计参数被选择,块输出修正后的状态估计
在时间步K.
,使用测量输出直到时间K.
.如果清除此参数,则块返回预测状态估计值
时间K.
,使用前一时间的测量输出进行估计k - 1
.如果你的过滤器在一个反馈循环中,并且在你的Simulink中有一个代数循环,那么清除这个参数万博1manbetx®模型。
P.
- 状态估计误差协方差状态估计误差协方差,返回为ns.——- - - - - -ns.矩阵,ns.是系统的状态数。要访问单个协方差,请使用选择器(万博1manbetxSimulink)块。
只有在选择时,您只能输出错误协方差输出状态估计错误协方差在块输出,多速率选项卡,然后单击申请.
如果在中,此参数可用块输出,多速率选项卡,状态估计方法参数设置为“的意思是”
.
粒子
-用于状态估计的粒子值用于状态估计的粒子值,返回为ns.——- - - - - -NP.要么NP.——- - - - - -ns.数组中。ns.是系统的状态数,和NP.是粒子的数量。
如果陈辞
参数被指定为'柱子'
, 然后粒子被归还为一个ns.——- - - - - -NP.数组中。
如果陈辞
参数被指定为'排'
, 然后粒子被归还为一个NP.——- - - - - -ns.数组中。
如果选择,则生成该端口输出所有粒子在块输出,多速率选项卡,然后单击申请.
重量
—用于状态估计的粒子权重用于状态估计的粒子重量,返回为1乘NP.要么NP.1的向量,NP.是用于状态估计的粒子数。
如果陈辞
参数被指定为'柱子'
, 然后重量作为一个1-by-返回NP.向量,其中每个权重与同一列中的粒子相关联粒子
数组中。
如果陈辞
参数被指定为'排'
, 然后重量被返回为一个NP.-by-1向量,其中每个权重与在同一行中的粒子相关联粒子
数组中。
如果选择,则生成该端口输出权值在块输出,多速率选项卡,然后单击申请.
功能
—状态转移函数名称“vdpParticleFilterStateFcn”
(默认)|函数名粒子过滤器状态转换功能在时间步骤计算粒子k + 1,给定时间步长的粒子K.根据系统的动态和过程噪声。这个函数的语法如下:
particlesNext = f(粒子,param1, param2,…)
在那里,粒子和particlesNext有尺寸ns.——- - - - - -NP.如果国家取向被指定为'柱子'
, 要么NP.——- - - - - -ns.如果国家取向被指定为'排'
.同时,param_i
表示可指定的可选输入参数。有关可选输入参数的更多信息,请参见StateTransitionFcnInputs.
中创建状态转换函数并指定函数名功能.例如,如果vdpparticlefilterstatefcn.m.
是您创建和保存的状态转换功能,指定功能作为“vdpParticleFilterStateFcn”
.
您可以创建功能用一个万博1manbetxSimulink功能(万博1manbetxSimulink)块或作为MATLAB函数(.m
文件)。
块参数:StateTransitionFCN. |
类型:字符向量,字符串 |
默认:“vdpParticleFilterStateFcn” |
粒子数
-过滤器中使用的粒子数过滤器中使用的粒子数,指定为正标量整数。每个粒子代表系统中的一个状态假设。粒子数量越多,状态估计的准确性就越高,但也增加了运行过滤器所需的计算工作量。
块参数:NumberOfParticles |
类型:正标量整数 |
默认:1000 |
分布
- 颗粒的初始分布“高斯”
(默认)|'制服'
|“自定义”
颗粒的初始分布,指定为“高斯”
那'制服'
, 要么“自定义”
.
如果你选择“高斯”
,粒子或状态假设的初始集合是按照多元高斯分布分布的,在那里你指定的意思是和协方差.假设所有粒子的初始重量相等。
如果你选择'制服'
,初始粒子集是按照均匀分布分布的,你指定了上和下国家边界.假设所有粒子的初始重量相等。
“自定义”
允许您指定自己的一组初始粒子及其重量。您可以使用任意概率分布粒子和重量初始化过滤器。
块参数:InitialDistribution |
类型:特征向量 |
价值观:“高斯” 那'制服' 那“自定义” |
默认:“高斯” |
的意思是
- 粒子的初始平均值颗粒的初始平均值,指定为载体。要估计的状态的数量定义了向量的长度。
如果在中,此参数可用系统模型选项卡,分布参数设置为高斯
.
块参数:initialmean. |
类型:数组 |
默认:(0,0) |
协方差
-粒子初始协方差颗粒的初始协方差,指定为标量,矢量或矩阵。
如果协方差被指定为:
标量,那么它必须是积极的。假设协方差为[ns.ns.在对角线上有这个标量的矩阵。在这里,ns.是状态数。
一个向量,那么每个元素都必须是正的。假设协方差为[ns.ns.]矩阵与对角线上的矢量元素。
矩阵,那么它必须是正半纤维。
如果在中,此参数可用系统模型选项卡,分布参数设置为高斯
.
块参数:初始转移性 |
类型:标量、向量或矩阵 |
默认:1 |
循环变量
-用于状态估计的循环变量用于状态估计的循环变量,指定为标量或ns.-element矢量,在哪里ns.是状态数。
如果循环变量指定为标量时,软件将其扩展为每个元素都等于该标量的向量。圆形(或角)分布使用的概率密度函数的范围为[- - - - - -π
π
].如果系统中的某些状态表示具有对象的方向的角数量,请使用圆形变量。
块参数:CircularVariables |
类型:标量、矢量 |
默认:0. |
国家取向
- 输入系统状态的方向'柱子'
(默认)|'排'
系统状态的方向,指定为'柱子'
要么'排'
.
如果国家取向被指定为:
'柱子'
,则状态转移和测量似然函数的第一个输入参数为[ns.NP.].在这种情况下,一世TH.该矩阵的列是一世TH.粒子(状态假设)。此外,国家估计xhat作为[ns.(1)向量。在这里,ns.是状态数,和NP.是粒子的数量。
'排'
,则状态转移和测量似然函数的第一个输入参数为[NP.ns.,矩阵的每一行包含一个粒子。此外,国家估计xhat输出为a [1ns.)向量。
块参数:陈辞 |
类型:特征向量 |
价值观:'柱子' 那'排' |
默认:'柱子' |
国家边界
-系统状态的初始边界系统状态的初始界限,指定为一个ns.2数组,ns.是状态数。
这一世TH.行列出均匀分布的均匀分布的较低和上限,用于颗粒的初始分布一世TH.状态。
如果在中,此参数可用系统模型选项卡,分布参数设置为统一的
.
块参数:InitialStateBounds. |
类型:数组 |
默认:(3 3 3; 3) |
粒子
-自定义粒子分布状态估计状态估计的自定义粒子分布,指定为一个ns.——- - - - - -NP.要么NP.——- - - - - -ns.数组中。ns.是系统的状态数,和NP.是粒子的数量。
如果陈辞
参数被指定为'柱子'
, 然后粒子是一个ns.——- - - - - -NP.数组中。
如果陈辞
参数被指定为'排'
, 然后粒子是一个NP.——- - - - - -ns.数组中。
如果在中,此参数可用系统模型选项卡,分布参数设置为自定义
.
块参数:初始序列 |
类型:数组 |
默认:[] |
重量
-自定义粒子权重值的状态估计状态估计的自定义粒度重量值,指定为1-by-NP.要么NP.-乘1的正向量NP.是用于状态估计的粒子数。
如果陈辞
参数被指定为'柱子'
, 然后重量是一个1-by-NP.向量。向量中的每个权重都与在同一列中的粒子相关联粒子
数组中。
如果陈辞
参数被指定为'排'
, 然后重量是一个NP.1的向量。向量中的每个权重都与在同一行中的粒子相关联粒子
数组中。
如果在中,此参数可用系统模型选项卡,分布参数设置为自定义
.
块参数:InitialWeights |
类型:阳性矢量 |
默认:[] |
功能
-测量似然函数名称'vdpmeasurementlikelioousfcn'
(默认)|函数名测量似然函数使用传感器测量来计算粒子(状态假设)的可能性。对于每个状态假设(粒子),该功能首先计算纳米-元素测量假设向量。然后根据传感器测量结果和测量噪声的概率分布,计算各测量假设的可能性。这个函数的语法如下:
似然= h(粒子,测量,param1,param2,......)
'柱子'
, 要么NP.——- - - - - -ns.如果国家取向被指定为'排'
.测量是一个纳米元向量,纳米是传感器提供的测量次数。param_i表示可指定的可选输入参数。有关可选输入参数的更多信息,请参见MeasurementLikelihoodFCN1Inputs,...,MeasurementLikelioieFCN5.Inputs.
您创建测量似然函数并指定功能名称功能.例如,如果vdpMeasurementLikelihoodFcn.m
是您创建和保存的测量似然函数,指定功能作为'vdpmeasurementlikelioousfcn'
.
您可以创建功能用一个万博1manbetxSimulink功能(万博1manbetxSimulink)块或作为MATLAB函数(.m
文件)。
如果系统中有多个传感器,可以指定多个测量似然函数。的方法可以指定多达5个测量可能性函数添加测量按钮。删除测量似然功能,使用删除测量.
块参数:MeasurementLikelihoodFcn1 那MeasurementLikelihoodFcn2 那MeasurementLikelihoodFcn3 那MeasurementLikelihoodFcn4 那MeasurementLikelihoodFcn5 |
类型:字符向量,字符串 |
默认:'vdpmeasurementlikelioousfcn' |
添加启用端口
—只有在有实测数据的情况下,才能对估计状态进行校正从
(默认)|在
假设在端口的所有时间点都不提供测量的输出数据日元这对应于第一个测量似然函数。生成输入端口启用1., 选择添加启用端口.在这个端口上使用一个信号,只有当测量数据可用时,才能校正估计的状态。类似地,如果测量的输出数据在港口的所有时间点都不可用y一世
为一世TH.测量似然函数,选择相应的添加启用端口.
块参数:HasMeasurementEnablePort1 那HasMeasurementEnablePort2 那HasMeasurementEnablePort3 那HasMeasurementEnablePort4 那HasMeasurementEnablePort5 |
类型:特征向量 |
价值观:“关闭” 那'在' |
默认:“关闭” |
重采样方法
- 用于粒子重采样的方法多项式的
(默认)|'systemic'
|“分层”
用于粒子重采样的方法,具体如下:
多项式的
'systematic'
“分层”
块参数:重新制动方法 |
类型:特征向量 |
价值观:多项式的 那'systemic' 那“分层” |
默认:多项式的 |
触发方法
-确定何时发生重采样的方法'比率'
(默认)|“间隔”
确定重新采样何时发生重新采样的方法,指定为'比率'
要么“间隔”
.这'比率'
基于有效总粒子的比率触发重采样。这“间隔”
值触发在粒子滤波器操作的常规时间步骤重新采样。
块参数:triggermethod. |
类型:特征向量 |
价值观:'比率' 那“间隔” |
默认:'比率' |
最小有效颗粒比
- 有效数量的颗粒与粒子总数的最小所需比率有效数量的颗粒与颗粒总数的最小所需比例,指定为正标量。有效数量的颗粒是测量当前一组粒子近似于后部分布的程度。较低的有效粒度意味着较低数量的粒子是有助于估计和重采样。
如果有效数量的颗粒与颗粒总数的比率低于最小有效粒度,则触发重采样步骤。
将最小有效粒径指定为0到0的任何值。
如果在中,此参数可用系统模型选项卡,触发方法参数设置为比
.
块参数:MinEffectiveParticleRatio |
类型:标量子 |
价值观:范围[0, 1] |
默认:0.5 |
采样间隔
- 重新采样之间的固定间隔重采样之间的固定间隔,指定为一个正标量整数。采样间隔决定了在哪个校正步骤期间执行重采样。例如,值为2表示每隔一秒进行一次重采样。的值正
意味着永远不会执行重采样。
如果在中,此参数可用系统模型选项卡,触发方法参数设置为时间间隔
.
块参数:SamplingInterval |
类型:正标量整数 |
默认:1 |
随机性
- 无论是可重复的'可重复'
(默认)|'不可重复'
随机数是否可重复,指定为'可重复'
要么'不可重复'
.如果您希望能够多次生成相同的结果,请设置随机性到'可重复'
,并指定相同的随机数发生器种子值种子.
块参数:随机性 |
类型:特征向量 |
价值观:'可重复' 那'不可重复' |
默认:'可重复' |
种子
-可重复随机数的种子值可重复随机数的种子值,指定为标量。
如果在中,此参数可用系统模型选项卡,随机性参数设置为'可重复'
.
块参数:种子 |
类型:标量子 |
默认:0. |
数据类型
—块参数的数据类型双
(默认)|单身的
使用此参数为所有块参数指定数据类型。
块参数:数据类型 |
类型:特征向量 |
价值观:“单一” 那“双” |
默认:“双” |
采样时间
-块样本时间1
(默认)|正标量块采样时间,指定为正标量。
使用采样时间参数如果您的状态转换和所有测量似然具有相同的采样时间。否则,选择使多重速率的操作选项在多重速率的选项卡,并在同一选项卡中指定示例时间。
如果在中,此参数可用块输出,多速率选项卡,使多重速率的操作参数是从
.
块参数:SampleTime |
类型:字符向量,字符串 |
默认:'1' |
状态估计方法
用于从粒子中提取状态估计的方法“的意思是”
(默认)|“MaxWeight”
|“没有”
用于从粒子中提取状态估计的方法,指定为以下其中之一:
“的意思是”
- 这粒子滤波Block根据参数输出粒子的加权平均值重量和粒子,就像州政府估计的那样。
“Maxweight”
- 这粒子滤波块输出权重最大的粒子作为状态估计。
“没有”
-使用此选项来实现自定义的状态估计方法,通过访问所有粒子使用输出所有粒子参数的块输出,多速率选项卡。
块参数:最终于司法方法 |
类型:字符向量,字符串 |
价值观:“的意思是” 那“MaxWeight” 那“没有” |
默认:“的意思是” |
输出所有粒子
- 输出所有粒子“关闭”
(默认)|'在'
如果选择此参数,则估计中使用的粒子的输出端口,粒子在块中生成。
如果陈辞
参数被指定为'柱子'
,然后将粒子输出为ns.——- - - - - -NP.数组中。ns.是系统的状态数,和NP.是粒子的数量。
如果陈辞
参数被指定为'排'
,然后将粒子输出为NP.——- - - - - -ns.数组中。
块参数:OutputParticles |
类型:特征向量 |
价值观:“关闭” 那'在' |
默认:“关闭” |
输出权值
- 输出粒子重量“关闭”
(默认)|'在'
如果选择此参数,则在估计中使用的粒子权重的输出端口,重量在块中生成。
如果陈辞
参数被指定为'柱子'
,则粒子权重以1-by-的形式输出NP.向量。在这里,每个重量都与同一列中的粒子相关联粒子
数组中。NP.是用于状态估计的粒子数。
如果陈辞
参数被指定为'排'
,则粒子权重输出为aNP.1的向量。
块参数:OutputWeights |
类型:特征向量 |
价值观:“关闭” 那'在' |
默认:“关闭” |
输出状态估计错误协方差
- 输出状态估计误差协方差“关闭”
(默认)|'在'
如果选择此参数,则状态估计错误协方差输出端口,P.在块中生成。
如果在中,此参数可用块输出,多速率选项卡,状态估计方法参数设置为“的意思是”
.
块参数:OutputStateCovariance |
类型:特征向量 |
价值观:“关闭” 那'在' |
默认:“关闭” |
使用当前测量来提高状态估计
- 使用当前测量的状态估计的选项'在'
(默认)|“关闭”
当选择此参数时,块输出修正后的状态估计
在时间步K.
,使用测量输出直到时间K.
.如果清除此参数,则块返回预测状态估计值
时间K.
,使用前一时间的测量输出进行估计k - 1
.如果过滤器处于反馈循环中,则清除此参数,并且在Simulink模型中有一个代数循环。万博1manbetx
块参数:UseCurrentEstimator |
类型:特征向量 |
价值观:'在' 那“关闭” |
默认:'在' |
使多重速率的操作
-允许状态转换和测量似然函数的不同采样时间的规格“关闭”
(默认)|'在'
如果状态转移的样本时间或任何测量似然函数的样本时间不同于其他的,请选择此参数。的示例时间多重速率的标签,in.采样时间.
块参数:EnableMultirate |
类型:特征向量 |
价值观:“关闭” 那'在' |
默认:“关闭” |
样本时间
-状态转移和测量似然函数的样本时间如果状态转移和测量似然函数的采样时间不同,则指定采样时间.指定测量函数的采样时间为状态转换采样时间的正整数倍。您指定的采样次数对应以下输入端口:
状态转换函数对应的端口-状态转换函数的附加输入StateTransitionFcnInputs.这些端口的采样时间必须始终等于状态转换功能采样时间,但可以与测量似然函数的采样时间不同。
港口对应一世TH.测量似然函数-测量输出y一世
,测量似然函数的附加输入MeasurementLikelihoodFcn一世
输入,在端口启用信号使能够一世
.对于相同的测量似然函数,这些端口的采样时间必须总是相同的,但可以与状态转移函数和其他测量似然函数的采样时间不同。
如果在中,此参数可用块输出,多速率选项卡,使多重速率的操作参数是在
.
块参数:StateTransitionFcnsampletime. 那MeasurementLikelihoodfcn1sampletime1. 那MeasurementLikelihoodFCN1Sampletime2. 那MeasurementLikelihoodFCN1Sampletime3. 那MeasurementLikelihoodfcn1sampletime4. 那MeasurementLikelihoodfcn1sampletime5. |
类型:字符向量,字符串 |
默认:'1' |
您指定的状态转换和测量似然函数必须仅使用支持代码生成的MATLAB命令和SIMULINK块。万博1manbetx万博1manbetx有关支持代码生成的块列表,请参阅万博1manbetx万博1manbetx支持代码生成的Simulink内置块万博1manbetx(万博1manbetxSimulink编码器).有关支持代码生成的命令列表,请参阅万博1manbetxC / C ++代码生成支持的函数和对象万博1manbetx(MATLAB编码器).
你点击一个链接对应于这个MATLAB命令:
通过在MATLAB命令窗口中输入命令来运行命令。Web浏览器不支持MATLAB命令。万博1manbetx
你也可以从以下列表中选择一个网站:
选择中国网站(以中文或英文)以获取最佳网站性能。其他MathWorks国家网站未优化您的位置。