利用粒子滤波估计离散非线性系统的状态
控制系统工具箱/状态估计
系统识别工具箱/估计程序
该粒子滤波块估计使用离散时间粒子滤波算法的一个离散时间的非线性系统的状态。
考虑一个有状态的工厂X、输入ü,输出米,过程噪声w ^和测量ÿ。假设你能够代表厂作为非线性系统。
该算法计算状态估计 的使用状态转移,并且指定测量似然函数的非线性系统。
您可以为系统创建非线性状态转换函数和测量似然函数,并在块中指定这些函数。该块支持多个传感器以万博1manbetx不同采样率工作的系统的状态估计。您可以指定最多五个测量似然函数,每个对应于系统中的一个传感器。
Y1,Y2,Y3,Y4,Y5
- 测量系统的输出被测系统的输出对应于您在块中指定的每个测量似然函数。端口的数量等于系统中测量似然函数的数量。您最多可以指定五个测量似然函数。例如,如果您的系统有两个传感器,您可以在块中指定两个测量似然函数。第一口日元默认情况下是可用的。点击添加测量,生成端口y2对应于所述第二测量似然函数。
指定端口为ñ维向量,ñ是由相应的传感器测得的量的数目。例如,如果系统具有测量的位置和物体的速度一个传感器,则只有一个端口日元。该端口被指定为与对应于位置和速度值的二维矢量。
第一口日元默认情况下是可用的。端口y2至日元当您单击生成添加测量。
StateTransitionFcnInputs
- 可选的输入参数状态转换功能可选的输入参数的状态转换功能F
国家以外的X
。
如果创建F
使用MATLAB®功能(.M
文件),该软件生成的端口StateTransitionFcnInputs当你进入你的函数的名称,然后单击应用。
如果你的状态转换函数有一个以上的额外的输入,使用万博1manbetxSimulink的功能块指定的功能。当您使用万博1manbetxSimulink的功能块,则直接提供附加的输入到万博1manbetxSimulink的功能块使用运行轨迹块。属性中的附加输入不生成任何输入端口粒子滤波块。
此端口只产生如果同时满足下列条件:
您指定F
在功能使用MATLAB函数,并且F
是MATLAB的路径。
F
只需要一个附加输入从粒子隔开的说法。
MeasurementLikelihoodFcn1Inputs,...,MeasurementLikelihoodFcn5Inputs
-每个测量似然函数的可选输入参数测量似然函数的可选输入,而不是状态函数X
和测量ÿ
。
MeasurementLikelihoodFcn1Inputs对应于第一测量似然函数您指定,等等。
如果你使用MATLAB函数指定两个测量输入(.M
文件)功能,软件生成端口MeasurementLikelihoodFcn1Inputs和MeasurementLikelihoodFcn2Inputs当你点击应用。您可以指定输入这些端口标量,矢量或矩阵。
如果您的测量似然函数有多个额外输入,请使用万博1manbetxSimulink的功能块来指定函数。当您使用万博1manbetxSimulink的功能块,则直接提供附加的输入到万博1manbetxSimulink的功能块使用运行轨迹块。属性中的附加输入不生成任何输入端口粒子滤波块。
对应于测量似然函数端口H
只在符合下列两项条件时才产生:
您可以指定测量输入H
在功能使用MATLAB函数,并且H
是MATLAB的路径。
H
只需要一个附加输入从颗粒和测量间隔参数。
ENABLE1,Enable2设定,Enable3,ENABLE4,Enable5
- 测得的数据时,使能估计状态的修正是可用当测量数据可用时,启用对估计状态的校正。
例如,考虑测量的输出数据在端口的所有时间点都不可用日元对应于所述第一测量似然函数。然后,使用比其它的信号值0
在ENABLE1当测得的数据是可用的端口,以使估计的状态的校正。指定端口值0
当无法获得测量数据时。类似地,如果测量的输出数据在端口的所有时间点都不可用ÿ一世
为一世日测量似然函数,指定相应的端口启用一世
作为一种价值0
。
如果您选择添加端口启用用于测量似然函数,产生对应于该测量似然函数的端口。当您单击的端口出现应用。
xhat
- 估计状态估计状态,返回大小的矢量NS,在那里NS是系统的状态数。要访问各州,使用选择块。
当使用电流测量,以提高状态估计参数选定,块输出校正后的状态估计
在时间步长ķ
使用测量的输出,直至时刻估计ķ
。如果清除该参数,该块返回所预测的状态估计
时间ķ
,使用测得的输出,直到前一时间估计k - 1
。清除此参数,如果你的过滤器是在反馈回路并且在您的Simulink中的代数环万博1manbetx®模型。
P
- 状态估计误差协方差状态估计误差协方差,返回一个NS——- - - - - -NS矩阵,NS是系统的状态数。若要访问个别协方差,请使用选择块。
您可以输出误差协方差只有当你选择输出状态估计误差协方差在模块输出,多速率选项卡,并单击应用。
此参数可如果在模块输出,多速率选项卡,状态估计方法参数设置为“的意思是”
。
粒子
- 用于状态估计粒子值用于状态估计的粒子值,返回为NS——- - - - - -NP要么NP——- - - - - -NS阵列。NS为系统的状态数,NP是颗粒的数目。
如果StateOrientation
参数被指定为'柱'
, 然后粒子会返回一个NS——- - - - - -NP阵列。
如果StateOrientation
参数被指定为'行'
, 然后粒子会返回一个NP——- - - - - -NS阵列。
如果选择,将生成此端口输出所有粒子在模块输出,多速率选项卡,并单击应用。
权重
- 用于状态估计颗粒重用于状态估计粒子权重,返回为1逐NP要么NP×1向量,其中NP是用于状态估计颗粒的数目。
如果StateOrientation
参数被指定为'柱'
, 然后权重返回为一个1逐NP向量,其中每个权值与同一列中的粒子相关联粒子
阵列。
如果StateOrientation
参数被指定为'行'
, 然后权重返回为一个NP×1矢量,其中每个权重与该颗粒的相同的行中相关联的粒子
阵列。
如果选择,将生成此端口输出权值在模块输出,多速率选项卡,并单击应用。
功能
- 状态转换函数名称'vdpParticleFilterStateFcn'
(默认)|函数名颗粒过滤器的状态转换函数计算粒子在时间步长k + 1,给定时刻的粒子ķ按您的系统和过程噪声的动态。这个函数的语法是:
particlesNext = F(颗粒,参数1,参数2,...)
哪里,粒子和particlesNext有尺寸NS——- - - - - -NP如果国家取向被指定为'柱'
, 要么NP——- - - - - -NS如果国家取向被指定为'行'
。也,param_i
表示可以指定的可选输入参数。有关可选输入参数的更多信息,请参见StateTransitionFcnInputs。
创建状态转换函数并在其中指定函数名功能。例如,如果vdpParticleFilterStateFcn.m
是您创建和保存状态转换函数,指定功能如'vdpParticleFilterStateFcn'
。
您可以创建功能用一个万博1manbetxSimulink的功能框或作为MATLAB函数(.M
文件)。
块参数:StateTransitionFcn |
类型:特征向量,串 |
默认:'vdpParticleFilterStateFcn' |
粒子数
- 在过滤器中使用颗粒的数在过滤器中使用的粒子的数目,指定为正标量整数。每个粒子表示系统中的状态的假设。较高的粒子数目增加了状态估计的精度,但同时也增加,运行过滤器所需的计算量。
块参数:NumberOfParticles |
类型:正标量整数 |
默认:1000 |
分配
- 颗粒的初始分布“高斯”
(默认)|'制服'
|“自定义”
颗粒的初始分布,指定为“高斯”
,'制服'
, 要么“自定义”
。
如果您选择“高斯”
,粒子或状态假设的初始集是按多元高斯分布分布的,在这里你指定的意思是和协方差。假设所有粒子的初始重量相等。
如果您选择'制服'
,粒子的初始集合是按均匀分布分布的,你指定上下国家边界。假设所有粒子的初始重量相等。
“自定义”
允许你指定你自己的一组初始粒子及其权重。您可以使用任意的概率分布粒子和权重初始化过滤器。
块参数:InitialDistribution |
类型:特征向量 |
价值观:“高斯” ,'制服' ,“自定义” |
默认:“高斯” |
的意思是
- 颗粒的初始平均值颗粒的初始平均值,指定为矢量。待估计的状态的数量定义了向量的长度。
此参数可如果在系统模型选项卡,分配参数设置为高斯
。
块参数:InitialMean |
类型:排列 |
默认:[0,0] |
协方差
-粒子的初始协方差颗粒的初始协方差,指定为一个标量,矢量或矩阵。
如果协方差具体为:
标量,那么它必须是积极的。协方差被假定为一个[NSNS在对角线上有这个标量的矩阵。在这里,NS是状态的数目。
一种载体,那么每个元件必须为正。协方差被假定为一个[NSNS]矩阵与矢量的在对角线上的元素。
矩阵,那么它一定是半正定的。
此参数可如果在系统模型选项卡,分配参数设置为高斯
。
块参数:InitialCovariance |
类型:标量、向量或矩阵 |
默认:1 |
循环变量
- 用于状态估计变量的通知用于状态估计的循环变量,指定为标量或NS- 元素向量,其中NS是状态的数目。
如果循环变量被指定为标量,软件将其扩展为一个向量,其中每个元素都等于这个标量。圆形(或角形)分布使用的概率密度函数的范围为[-π
π
]。使用循环变量如果某些系统中的状态表示类似物体的方位角度的数量。
块参数:CircularVariables |
类型:标量,矢量 |
默认:0 |
国家取向
- 输入系统状态的方向'柱'
(默认)|'行'
系统状态的方向,指定为'柱'
要么'行'
。
如果国家取向具体为:
'柱'
,则状态转换和测量似然函数的第一个输入参数为[NSNP]。在这种情况下,一世日该矩阵的列是一世日粒子(态假说)。此外,各州估计xhat输出为[NS(1)向量。在这里,NS是状态的数目,和NP是颗粒的数目。
'行'
,则状态转换和测量似然函数的第一个输入参数为[NPNS],并且该矩阵的每一行中包含的粒子。此外,各州估计xhat是作为输出[1NS)向量。
块参数:StateOrientation |
类型:特征向量 |
价值观:'柱' ,'行' |
默认:'柱' |
国家边界
-系统状态的初始界限上系统状态初始边界内,指定为NS2数组,NS是状态的数目。
该一世日行列出了下部和上部结合的均匀分布的对颗粒的初始分布一世日状态。
此参数可如果在系统模型选项卡,分配参数设置为统一的
。
块参数:InitialStateBounds |
类型:排列 |
默认:(3 3 3;3) |
粒子
-自定义粒子分布状态估计状态估计定制的颗粒分布,指定为NS——- - - - - -NP要么NP——- - - - - -NS阵列。NS为系统的状态数,NP是颗粒的数目。
如果StateOrientation
参数被指定为'柱'
, 然后粒子是一个NS——- - - - - -NP阵列。
如果StateOrientation
参数被指定为'行'
, 然后粒子是一个NP——- - - - - -NS阵列。
此参数可如果在系统模型选项卡,分配参数设置为自定义
。
块参数:InitialParticles |
类型:排列 |
默认:[] |
权重
- 对状态估计的自定义粒子的权重值状态估计定制粒子的权重值,指定为1逐NP要么NP-乘1的正向量,其中NP是用于状态估计颗粒的数目。
如果StateOrientation
参数被指定为'柱'
, 然后权重是1逐NP向量。向量中的每个权值都与同一列中的粒子相关联粒子
阵列。
如果StateOrientation
参数被指定为'行'
, 然后权重是一个NP1的向量。向量中的每个权值都与同一行的粒子相关粒子
阵列。
此参数可如果在系统模型选项卡,分配参数设置为自定义
。
块参数:InitialWeights |
类型:正矢量 |
默认:[] |
功能
-测量似然函数名称'vdpMeasurementLikelihoodFcn'
(默认)|函数名测量似然函数计算利用传感器测量粒子(状态假设)的可能性。对于每个状态假设(粒子),该函数的第一计算纳米- 元素测量假设矢量。然后每个测量假说的可能性是基于所述传感器的测量和测量噪声的概率分布进行计算。这个函数的语法是:
似然= H(颗粒,测量,参数1,参数2,...)
'柱'
, 要么NP——- - - - - -NS如果国家取向被指定为'行'
。测量是一个纳米- 元素矢量,其中,纳米是你的传感器提供的测量次数。param_i表示可以指定的可选输入参数。有关可选输入参数的更多信息,请参见MeasurementLikelihoodFcn1Inputs,...,MeasurementLikelihoodFcn5Inputs。
创建测量似然函数和指定函数名功能。例如,如果vdpMeasurementLikelihoodFcn.m
是您创建和保存测量似然函数,指定功能如'vdpMeasurementLikelihoodFcn'
。
您可以创建功能用一个万博1manbetxSimulink的功能框或作为MATLAB函数(.M
文件)。
如果系统中有多个传感器,可以指定多个测量似然函数。方法指定最多五个测量似然函数添加测量按钮。以除去测量似然函数,使用删除测量。
块参数:MeasurementLikelihoodFcn1 ,MeasurementLikelihoodFcn2 ,MeasurementLikelihoodFcn3 ,MeasurementLikelihoodFcn4 ,MeasurementLikelihoodFcn5 |
类型:特征向量,串 |
默认:'vdpMeasurementLikelihoodFcn' |
添加启用端口
- 仅当测得的数据来估计状态的使能校正可用离
(默认)|上
假设测得的输出数据目前还无法提供在港口的所有时间点日元对应于所述第一测量似然函数。以产生输入端口ENABLE1, 选择添加端口启用。在此端口使用一个信号,只有在测量数据可用时才能校正估计的状态。类似地,如果测量的输出数据在端口的所有时间点都不可用ÿ一世
为一世日测量似然函数,选择对应添加端口启用。
块参数:HasMeasurementEnablePort1 ,HasMeasurementEnablePort2 ,HasMeasurementEnablePort3 ,HasMeasurementEnablePort4 ,HasMeasurementEnablePort5 |
类型:特征向量 |
价值观:“关闭” ,'上' |
默认:“关闭” |
重采样方法
- 方法用于粒子重采样“多项”
(默认)|“系统性”
|“分层”
方法用于颗粒重采样,指定为以下情况之一:
“多项”
“系统”
“分层”
块参数:ResamplingMethod |
类型:特征向量 |
价值观:“多项” ,“系统性” ,“分层” |
默认:“多项” |
触发方式
-方法来确定什么时候重新采样发生'比'
(默认)|“间隔”
法,以确定何时重采样发生时,指定为'比'
要么“间隔”
。该'比'
值重采样触发器基于有效总粒子的比例。该“间隔”
值的触发器在颗粒过滤器的操作的规则的时间重采样步骤。
块参数:TriggerMethod |
类型:特征向量 |
价值观:'比' ,“间隔” |
默认:'比' |
最小有效粒子比
- 最少所需的有效数量的颗粒的比例的颗粒的总数最小期望的有效数量的颗粒的比例的颗粒的总数,指定为正标量。粒子的有效数量是当前一组颗粒的有多好近似后验分布的量度。较低的有效粒子比率意味着颗粒的较低数量有助于估计和需要重采样。
如果有效数量的颗粒的以颗粒的总数量的比率落在最小有效粒子比率以下,则重采样步骤被触发。
指定最小有效粒子的比率为从0至1的任何值。
此参数可如果在系统模型选项卡,触发方式参数设置为比
。
块参数:MinEffectiveParticleRatio |
类型:纯量 |
价值观:范围[0,1] |
默认:0.5 |
采样间隔
- 重采样之间的固定间隔重新采样之间的固定间隔,指定为正的标量整数。采样间隔决定了在哪个校正步骤中执行重采样。例如,如果值为2,则意味着每隔一个修正步骤就会执行一次重新采样。的值正
这是从来没有执行重采样手段。
此参数可如果在系统模型选项卡,触发方式参数设置为间隔
。
块参数:SAMPLINGINTERVAL |
类型:正标量整数 |
默认:1 |
随机性
- 无论是随机数是重复“重复”
(默认)|“不重复”
无论是随机数是可重复的,指定为“重复”
要么“不重复”
。如果你想要产生相同的结果不止一次,设置随机性至“重复”
,并指定在相同的随机数发生器的种子值种子。
块参数:随机性 |
类型:特征向量 |
价值观:“重复” ,“不重复” |
默认:“重复” |
种子
-可重复随机数的种子值可重复的随机数种子值,指定为标量。
此参数可如果在系统模型选项卡,随机性参数设置为“重复”
。
块参数:种子 |
类型:纯量 |
默认:0 |
数据类型
-数据类型为块参数双
(默认)|单
使用该参数指定的数据类型为所有的块参数。
块参数:数据类型 |
类型:特征向量 |
价值观:“单一” ,'双' |
默认:'双' |
采样时间
-块采样时间1
(默认)|为正标量块样本时间,指定为正标量。
使用采样时间参数,如果你的状态过渡,所有的测量似然函数具有相同的采样时间。否则,请选择启用多速率操作在选项多重速率的标签,并在相同的选项卡中指定的采样时间。
此参数可如果在块的输出,多速率选项卡,启用多速率操作参数离
。
块参数:采样时间 |
类型:特征向量,串 |
默认:'1' |
状态估计方法
-用于从粒子中提取状态估计的方法“的意思是”
(默认)|“MaxWeight”
|“没有”
方法用于提取从颗粒上的状态估计,指定为以下情况之一:
“的意思是”
- 该粒子滤波块根据参数输出粒子的加权平均值权重和粒子作为该状态评估。
“Maxweight”
- 该粒子滤波块输出具有最高权重的状态估计值的粒子。
“没有”
- 使用此选项通过访问使用所有粒子来实现自定义的状态估计方法输出所有粒子参数的模块输出,多速率选项卡。
块参数:StateEstimationMethod |
类型:特征向量,串 |
价值观:“的意思是” ,“MaxWeight” ,“没有” |
默认:“的意思是” |
输出所有粒子
- 输出所有的粒子“关闭”
(默认)|'上'
如果选择此参数,在估计用于颗粒输出端口,粒子在块中生成。
如果StateOrientation
参数被指定为'柱'
,则颗粒是作为输出NS——- - - - - -NP阵列。NS为系统的状态数,NP是颗粒的数目。
如果StateOrientation
参数被指定为'行'
,则颗粒是作为输出NP——- - - - - -NS阵列。
块参数:OutputParticles |
类型:特征向量 |
价值观:“关闭” ,'上' |
默认:“关闭” |
输出权值
- 输出粒子权重“关闭”
(默认)|'上'
如果你选择这个参数,一个用于估计的粒子权值的输出端口,权重在块中生成。
如果StateOrientation
参数被指定为'柱'
,则粒子权重是1个副输出NP向量。在这里,每个权值都与同一列中的粒子相关联粒子
阵列。NP是用于状态估计颗粒的数目。
如果StateOrientation
参数被指定为'行'
,则粒子权值输出为aNP1的向量。
块参数:OutputWeights |
类型:特征向量 |
价值观:“关闭” ,'上' |
默认:“关闭” |
输出状态估计误差协方差
- 输出状态估计误差协方差“关闭”
(默认)|'上'
如果选择此参数,状态估计误差协方差输出端口,P在块中生成。
此参数可如果在模块输出,多速率选项卡,状态估计方法参数设置为“的意思是”
。
块参数:OutputStateCovariance |
类型:特征向量 |
价值观:“关闭” ,'上' |
默认:“关闭” |
使用电流测量,以提高状态估计
- 选项可使用状态估计电流测量'上'
(默认)|“关闭”
当选择该参数,则块输出校正状态估计
在时间步长ķ
使用测量的输出,直至时刻估计ķ
。如果清除该参数,该块返回所预测的状态估计
时间ķ
,使用测得的输出,直到前一时间估计k - 1
。如果你的过滤器是在反馈回路并且在您的Simulink模型的代数环清除此参数。万博1manbetx
块参数:UseCurrentEstimator |
类型:特征向量 |
价值观:'上' ,“关闭” |
默认:'上' |
启用多速率操作
-为状态转换和测量似然函数指定不同的采样时间“关闭”
(默认)|'上'
如果状态转换的采样时间或任何测量似然函数与其他函数不同,请选择此参数。中指定样本时间多重速率的选项卡,在采样时间。
块参数:EnableMultirate |
类型:特征向量 |
价值观:“关闭” ,'上' |
默认:“关闭” |
采样时间
-状态转换和测量似然函数采样次数如果状态转换和测量似然函数的采样时间是不同的,指定采样时间。将测量函数的采样时间指定为状态转换采样时间的正整数倍。你指定的样本时间对应以下输入端口:
对应于状态转换函数的端口——状态转换函数的额外输入StateTransitionFcnInputs。这些端口的采样时间必须总是等于状态转换函数的采样时间,但可以从测量似然函数的采样时间是不同的。
对应端口一世日测量似然函数 - 测量输出ÿ一世
,测量似然函数的附加输入MeasurementLikelihoodFcn一世
输入,启用港口信号启用一世
。对于相同的测量似然函数,这些端口的采样时间必须总是相同的,但可能与状态转换函数和其他测量似然函数的采样时间不同。
此参数可如果在模块输出,多速率选项卡,启用多速率操作参数上
。
块参数:StateTransitionFcnSampleTime ,MeasurementLikelihoodFcn1SampleTime1 ,MeasurementLikelihoodFcn1SampleTime2 ,MeasurementLikelihoodFcn1SampleTime3 ,MeasurementLikelihoodFcn1SampleTime4 ,MeasurementLikelihoodFcn1SampleTime5 |
类型:特征向量,串 |
默认:'1' |
您指定的状态转换和测量似然函数只能使用MATLAB命令和Simulink模块的支持代码生成。万博1manbetx万博1manbetx对于块的支持代码生成,请参阅列表万博1manbetx万博1manbetxSimulink的内置模块,支持代码生成万博1manbetx(万博1manbetx编码器的Simulink)。有关命令的支持代码生成,请参阅列表万博1manbetx支持的C / C ++代码生成函数和对象万博1manbetx(编码器MATLAB)。
아래MATLAB명령에해당하는링크를클릭하셨습니다。
이명령을MATLAB명령창에입력해실행하십시오。웹브라우저에서는MATLAB명령을지원하지않습니다。
您还可以选择从下面的列表中的网站:
选择最佳的网站性能的中国网站(在中国或英文)。其他MathWorks的国家网站都没有从您的位置访问进行了优化。