粒子滤波

利用粒子滤波估计离散非线性系统的状态

  • 图书馆:
  • 控制系统工具箱/状态估计

    系统识别工具箱/估计程序

描述

粒子滤波块估计使用离散时间粒子滤波算法的一个离散时间的非线性系统的状态。

考虑一个有状态的工厂X、输入ü,输出,过程噪声w ^和测量ÿ。假设你能够代表厂作为非线性系统。

该算法计算状态估计 X ^ 的使用状态转移,并且指定测量似然函数的非线性系统。

您可以为系统创建非线性状态转换函数和测量似然函数,并在块中指定这些函数。该块支持多个传感器以万博1manbetx不同采样率工作的系统的状态估计。您可以指定最多五个测量似然函数,每个对应于系统中的一个传感器。

端口

输入

全部展开

被测系统的输出对应于您在块中指定的每个测量似然函数。端口的数量等于系统中测量似然函数的数量。您最多可以指定五个测量似然函数。例如,如果您的系统有两个传感器,您可以在块中指定两个测量似然函数。第一口日元默认情况下是可用的。点击添加测量,生成端口y2对应于所述第二测量似然函数。

指定端口为ñ维向量,ñ是由相应的传感器测得的量的数目。例如,如果系统具有测量的位置和物体的速度一个传感器,则只有一个端口日元。该端口被指定为与对应于位置和速度值的二维矢量。

依赖关系

第一口日元默认情况下是可用的。端口y2日元当您单击生成添加测量

可选的输入参数的状态转换功能F国家以外的X

如果创建F使用MATLAB®功能(.M文件),该软件生成的端口StateTransitionFcnInputs当你进入你的函数的名称,然后单击应用

如果你的状态转换函数有一个以上的额外的输入,使用万博1manbetxSimulink的功能块指定的功能。当您使用万博1manbetxSimulink的功能块,则直接提供附加的输入到万博1manbetxSimulink的功能块使用运行轨迹块。属性中的附加输入不生成任何输入端口粒子滤波块。

依赖关系

此端口只产生如果同时满足下列条件:

  • 您指定F功能使用MATLAB函数,并且F是MATLAB的路径。

  • F只需要一个附加输入从粒子隔开的说法。

测量似然函数的可选输入,而不是状态函数X和测量ÿ

MeasurementLikelihoodFcn1Inputs对应于第一测量似然函数您指定,等等。

如果你使用MATLAB函数指定两个测量输入(.M文件)功能,软件生成端口MeasurementLikelihoodFcn1InputsMeasurementLikelihoodFcn2Inputs当你点击应用。您可以指定输入这些端口标量,矢量或矩阵。

如果您的测量似然函数有多个额外输入,请使用万博1manbetxSimulink的功能块来指定函数。当您使用万博1manbetxSimulink的功能块,则直接提供附加的输入到万博1manbetxSimulink的功能块使用运行轨迹块。属性中的附加输入不生成任何输入端口粒子滤波块。

依赖关系

对应于测量似然函数端口H只在符合下列两项条件时才产生:

  • 您可以指定测量输入H功能使用MATLAB函数,并且H是MATLAB的路径。

  • H只需要一个附加输入从颗粒和测量间隔参数。

当测量数据可用时,启用对估计状态的校正。

例如,考虑测量的输出数据在端口的所有时间点都不可用日元对应于所述第一测量似然函数。然后,使用比其它的信号值0ENABLE1当测得的数据是可用的端口,以使估计的状态的校正。指定端口值0当无法获得测量数据时。类似地,如果测量的输出数据在端口的所有时间点都不可用ÿ一世一世测量似然函数,指定相应的端口启用一世作为一种价值0

依赖关系

如果您选择添加端口启用用于测量似然函数,产生对应于该测量似然函数的端口。当您单击的端口出现应用

产量

全部展开

估计状态,返回大小的矢量NS,在那里NS是系统的状态数。要访问各州,使用选择块。

使用电流测量,以提高状态估计参数选定,块输出校正后的状态估计 X ^ [ ķ | ķ ] 在时间步长ķ使用测量的输出,直至时刻估计ķ。如果清除该参数,该块返回所预测的状态估计 X ^ [ ķ | ķ - 1 ] 时间ķ,使用测得的输出,直到前一时间估计k - 1。清除此参数,如果你的过滤器是在反馈回路并且在您的Simulink中的代数环万博1manbetx®模型。

状态估计误差协方差,返回一个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矢量,其中每个权重与该颗粒的相同的行中相关联的粒子阵列。

依赖关系

如果选择,将生成此端口输出权值模块输出,多速率选项卡,并单击应用

参数

全部展开

系统模型选项卡

状态转换

颗粒过滤器的状态转换函数计算粒子在时间步长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
类型:正矢量
默认:[]

测量

测量似然函数计算利用传感器测量粒子(状态假设)的可能性。对于每个状态假设(粒子),该函数的第一计算纳米- 元素测量假设矢量。然后每个测量假说的可能性是基于所述传感器的测量和测量噪声的概率分布进行计算。这个函数的语法是:

似然= H(颗粒,测量,参数1,参数2,...)
哪里,可能性是一个NP- 元素向量,其中NP是颗粒的数目。粒子有尺寸NS——- - - - - -NP如果国家取向被指定为'柱', 要么NP——- - - - - -NS如果国家取向被指定为'行'测量是一个纳米- 元素矢量,其中,纳米是你的传感器提供的测量次数。param_i表示可以指定的可选输入参数。有关可选输入参数的更多信息,请参见MeasurementLikelihoodFcn1Inputs,...,MeasurementLikelihoodFcn5Inputs

创建测量似然函数和指定函数名功能。例如,如果vdpMeasurementLikelihoodFcn.m是您创建和保存测量似然函数,指定功能'vdpMeasurementLikelihoodFcn'

您可以创建功能用一个万博1manbetxSimulink的功能框或作为MATLAB函数(.M文件)。

  • 您可以使用MATLAB函数只有在H具有零个或一个附加的输入参数param_i以外粒子测量

    软件生成的附加输入端口MeasurementLikelihoodFcn一世输入指定这个参数为一世测量似然函数,点击应用

  • 如果你用a万博1manbetxSimulink的功能块,指定Xÿ运用参数运行轨迹块和附加的输入param_i运用运行轨迹块的万博1manbetxSimulink的功能块。你不提供param_i粒子滤波块。

如果系统中有多个传感器,可以指定多个测量似然函数。方法指定最多五个测量似然函数添加测量按钮。以除去测量似然函数,使用删除测量

程序中使用

块参数:MeasurementLikelihoodFcn1MeasurementLikelihoodFcn2MeasurementLikelihoodFcn3MeasurementLikelihoodFcn4MeasurementLikelihoodFcn5
类型:特征向量,串
默认:'vdpMeasurementLikelihoodFcn'

假设测得的输出数据目前还无法提供在港口的所有时间点日元对应于所述第一测量似然函数。以产生输入端口ENABLE1, 选择添加端口启用。在此端口使用一个信号,只有在测量数据可用时才能校正估计的状态。类似地,如果测量的输出数据在端口的所有时间点都不可用ÿ一世一世测量似然函数,选择对应添加端口启用

程序中使用

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

重采样

方法用于颗粒重采样,指定为以下情况之一:

  • “多项”

  • “系统”

  • “分层”

程序中使用

块参数:ResamplingMethod
类型:特征向量
价值观:“多项”“系统性”“分层”
默认:“多项”

法,以确定何时重采样发生时,指定为'比'要么“间隔”。该'比'值重采样触发器基于有效总粒子的比例。该“间隔”值的触发器在颗粒过滤器的操作的规则的时间重采样步骤。

程序中使用

块参数:TriggerMethod
类型:特征向量
价值观:'比'“间隔”
默认:'比'

最小期望的有效数量的颗粒的比例的颗粒的总数,指定为正标量。粒子的有效数量是当前一组颗粒的有多好近似后验分布的量度。较低的有效粒子比率意味着颗粒的较低数量有助于估计和需要重采样。

如果有效数量的颗粒的以颗粒的总数量的比率落在最小有效粒子比率以下,则重采样步骤被触发。

指定最小有效粒子的比率为从0至1的任何值。

依赖关系

此参数可如果在系统模型选项卡,触发方式参数设置为

程序中使用

块参数:MinEffectiveParticleRatio
类型:纯量
价值观:范围[0,1]
默认:0.5

重新采样之间的固定间隔,指定为正的标量整数。采样间隔决定了在哪个校正步骤中执行重采样。例如,如果值为2,则意味着每隔一个修正步骤就会执行一次重新采样。的值这是从来没有执行重采样手段。

依赖关系

此参数可如果在系统模型选项卡,触发方式参数设置为间隔

程序中使用

块参数:SAMPLINGINTERVAL
类型:正标量整数
默认:1

随机数生成器选项

无论是随机数是可重复的,指定为“重复”要么“不重复”。如果你想要产生相同的结果不止一次,设置随机性“重复”,并指定在相同的随机数发生器的种子值种子

程序中使用

块参数:随机性
类型:特征向量
价值观:“重复”“不重复”
默认:“重复”

可重复的随机数种子值,指定为标量。

依赖关系

此参数可如果在系统模型选项卡,随机性参数设置为“重复”

程序中使用

块参数:种子
类型:纯量
默认:0

设置

使用该参数指定的数据类型为所有的块参数。

程序中使用

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

块样本时间,指定为正标量。

使用采样时间参数,如果你的状态过渡,所有的测量似然函数具有相同的采样时间。否则,请选择启用多速率操作在选项多重速率的标签,并在相同的选项卡中指定的采样时间。

依赖关系

此参数可如果在块的输出,多速率选项卡,启用多速率操作参数

程序中使用

块参数:采样时间
类型:特征向量,串
默认:'1'

块输出,多速率标签

输出

方法用于提取从颗粒上的状态估计,指定为以下情况之一:

  • “的意思是”- 该粒子滤波块根据参数输出粒子的加权平均值权重粒子作为该状态评估。

  • “Maxweight”- 该粒子滤波块输出具有最高权重的状态估计值的粒子。

  • “没有”- 使用此选项通过访问使用所有粒子来实现自定义的状态估计方法输出所有粒子参数的模块输出,多速率选项卡。

程序中使用

块参数:StateEstimationMethod
类型:特征向量,串
价值观:“的意思是”“MaxWeight”“没有”
默认:“的意思是”

如果选择此参数,在估计用于颗粒输出端口,粒子在块中生成。

  • 如果StateOrientation参数被指定为'柱',则颗粒是作为输出NS——- - - - - -NP阵列。NS为系统的状态数,NP是颗粒的数目。

  • 如果StateOrientation参数被指定为'行',则颗粒是作为输出NP——- - - - - -NS阵列。

程序中使用

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

如果你选择这个参数,一个用于估计的粒子权值的输出端口,权重在块中生成。

  • 如果StateOrientation参数被指定为'柱',则粒子权重是1个副输出NP向量。在这里,每个权值都与同一列中的粒子相关联粒子阵列。NP是用于状态估计颗粒的数目。

  • 如果StateOrientation参数被指定为'行',则粒子权值输出为aNP1的向量。

程序中使用

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

如果选择此参数,状态估计误差协方差输出端口,P在块中生成。

依赖关系

此参数可如果在模块输出,多速率选项卡,状态估计方法参数设置为“的意思是”

程序中使用

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

当选择该参数,则块输出校正状态估计 X ^ [ ķ | ķ ] 在时间步长ķ使用测量的输出,直至时刻估计ķ。如果清除该参数,该块返回所预测的状态估计 X ^ [ ķ | ķ - 1 ] 时间ķ,使用测得的输出,直到前一时间估计k - 1。如果你的过滤器是在反馈回路并且在您的Simulink模型的代数环清除此参数。万博1manbetx

程序中使用

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

多重速率的

如果状态转换的采样时间或任何测量似然函数与其他函数不同,请选择此参数。中指定样本时间多重速率的选项卡,在采样时间

程序中使用

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

如果状态转换和测量似然函数的采样时间是不同的,指定采样时间。将测量函数的采样时间指定为状态转换采样时间的正整数倍。你指定的样本时间对应以下输入端口:

  • 对应于状态转换函数的端口——状态转换函数的额外输入StateTransitionFcnInputs。这些端口的采样时间必须总是等于状态转换函数的采样时间,但可以从测量似然函数的采样时间是不同的。

  • 对应端口一世测量似然函数 - 测量输出ÿ一世,测量似然函数的附加输入MeasurementLikelihoodFcn一世输入,启用港口信号启用一世。对于相同的测量似然函数,这些端口的采样时间必须总是相同的,但可能与状态转换函数和其他测量似然函数的采样时间不同。

依赖关系

此参数可如果在模块输出,多速率选项卡,启用多速率操作参数

程序中使用

块参数:StateTransitionFcnSampleTimeMeasurementLikelihoodFcn1SampleTime1MeasurementLikelihoodFcn1SampleTime2MeasurementLikelihoodFcn1SampleTime3MeasurementLikelihoodFcn1SampleTime4MeasurementLikelihoodFcn1SampleTime5
类型:特征向量,串
默认:'1'

扩展功能

介绍了在R2018a