主要内容

粒子滤波

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

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

    系统识别工具箱/评估器

  • pf_block

描述

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

考虑一个有状态的植物X、输入、输出m,过程噪声W.,测量y.假设你可以将植物表示为一个非线性系统。

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

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

港口

输入

全部展开

测量的系统输出对应于您在块中指定的每个测量似然函数。端口的数量等于系统中测量似然函数的数量。您可以指定多达5个测量似然函数。例如,如果系统有两个传感器,则在块中指定两个测量似然函数。第一个港口日元默认为可用。点击添加测量,生成端口y2对应于第二测量似然函数。

指定端口为N维向量,N是相应传感器测量的量数。例如,如果您的系统有一个测量对象的位置和速度的传感器,那么只有一个端口日元.端口被指定为一个二维矢量,其值对应于位置和速度。

依赖关系

第一个港口日元默认为可用。港口y2日元单击时会生成添加测量

状态转换函数的可选输入参数F除了国家X

如果您创建F使用MATLAB®函数(.m文件),软件生成端口StateTransitionFcnInputs当您输入函数的名称时,并单击申请

如果您的状态转换函数具有多个额外输入,请使用a万博1manbetxSimulink功能(万博1manbetxSimulink)块指定函数。当你使用的时候万博1manbetxSimulink功能块,您将额外的输入直接提供给万博1manbetxSimulink功能块使用轮廓尺寸(万博1manbetxSimulink)块。的附加输入不生成输入端口粒子滤波块。

依赖关系

满足以下两个条件时,才会生成该端口:

  • 你指定F功能使用MATLAB函数,并F在matlab路上。

  • F除了粒子外,只需要一个额外的输入参数。

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

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

如果您使用MATLAB函数指定两个测量输入(.m文件)在功能,软件生成端口MeasurementLikelihoodFcn1InputsMeasurementLikelihoodFcn2Inputs当你点击申请.您可以将这些端口的输入指定为标量,向量或矩阵。

如果测量似然函数有不止一个额外的输入,请使用万博1manbetxSimulink功能(万博1manbetxSimulink)块来指定函数。当你使用的时候万博1manbetxSimulink功能块,您将额外的输入直接提供给万博1manbetxSimulink功能块使用轮廓尺寸(万博1manbetxSimulink)块。的附加输入不生成输入端口粒子滤波块。

依赖关系

对应于测量似然函数的端口H只有满足以下两个条件时才生成:

  • 您指定测量输入H功能使用MATLAB函数,并H在matlab路上。

  • H除了粒子和测量外,只需要一个额外的输入参数。

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

例如,考虑到测量的输出数据不是在端口的所有时间点都可用的日元这对应于第一个测量似然函数。然后,使用一个信号值0.启用1.当测量数据可用时,以启用估计状态的端口。指定端口值为0.没有测量数据时。类似地,如果测量的输出数据在港口的所有时间点都不可用y一世一世TH.测量似然函数,指定相应的端口使能够一世作为一种价值0.

依赖关系

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

输出

全部展开

估计状态,返回为大小向量ns.,在那里ns.是系统的状态数。要访问个人状态,请使用选择器(万博1manbetxSimulink)块。

使用当前测量来提高状态估计参数被选择,块输出修正后的状态估计 X ^ [ K. | K. ] 在时间步K.,使用测量输出直到时间K..如果清除此参数,则块返回预测状态估计值 X ^ [ K. | K. - 1 ] 时间K.,使用前一时间的测量输出进行估计k - 1.如果你的过滤器在一个反馈循环中,并且在你的Simulink中有一个代数循环,那么清除这个参数万博1manbetx®模型。

状态估计误差协方差,返回为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向量,其中每个权重与在同一行中的粒子相关联粒子数组中。

依赖关系

如果选择,则生成该端口输出权值块输出,多速率选项卡,然后单击申请

参数

全部展开

系统模型选项卡

状态转换

粒子过滤器状态转换功能在时间步骤计算粒子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
类型:阳性矢量
默认:[]
测量

测量似然函数使用传感器测量来计算粒子(状态假设)的可能性。对于每个状态假设(粒子),该功能首先计算纳米-元素测量假设向量。然后根据传感器测量结果和测量噪声的概率分布,计算各测量假设的可能性。这个函数的语法如下:

似然= h(粒子,测量,param1,param2,......)
在那里,可能性是一个NP.-element矢量,在哪里NP.是粒子的数量。粒子有尺寸ns.——- - - - - -NP.如果国家取向被指定为'柱子', 要么NP.——- - - - - -ns.如果国家取向被指定为'排'测量是一个纳米元向量,纳米是传感器提供的测量次数。param_i表示可指定的可选输入参数。有关可选输入参数的更多信息,请参见MeasurementLikelihoodFCN1Inputs,...,MeasurementLikelioieFCN5.Inputs

您创建测量似然函数并指定功能名称功能.例如,如果vdpMeasurementLikelihoodFcn.m是您创建和保存的测量似然函数,指定功能作为'vdpmeasurementlikelioousfcn'

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

  • 您只能使用MATLAB函数H有零或一个额外的输入参数param_i除了粒子测量

    该软件生成一个附加输入端口MeasurementLikelihoodFcn一世输入为此说明此参数一世TH.测量似然函数,点击申请

  • 如果你用a万博1manbetxSimulink功能块,指定Xy使用参数Inport.(万博1manbetxSimulink)块和附加输入param_i使用轮廓尺寸(万博1manbetxSimulink)块的万博1manbetxSimulink功能块。你不提供param_i粒子滤波块。

如果系统中有多个传感器,可以指定多个测量似然函数。的方法可以指定多达5个测量可能性函数添加测量按钮。删除测量似然功能,使用删除测量

程序使用

块参数:MeasurementLikelihoodFcn1MeasurementLikelihoodFcn2MeasurementLikelihoodFcn3MeasurementLikelihoodFcn4MeasurementLikelihoodFcn5
类型:字符向量,字符串
默认:'vdpmeasurementlikelioousfcn'

假设在端口的所有时间点都不提供测量的输出数据日元这对应于第一个测量似然函数。生成输入端口启用1., 选择添加启用端口.在这个端口上使用一个信号,只有当测量数据可用时,才能校正估计的状态。类似地,如果测量的输出数据在港口的所有时间点都不可用y一世一世TH.测量似然函数,选择相应的添加启用端口

程序使用

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

用于粒子重采样的方法,具体如下:

  • 多项式的

  • 'systematic'

  • “分层”

程序使用

块参数:重新制动方法
类型:特征向量
价值观:多项式的'systemic'“分层”
默认:多项式的

确定重新采样何时发生重新采样的方法,指定为'比率'要么“间隔”.这'比率'基于有效总粒子的比率触发重采样。这“间隔”值触发在粒子滤波器操作的常规时间步骤重新采样。

程序使用

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

有效数量的颗粒与颗粒总数的最小所需比例,指定为正标量。有效数量的颗粒是测量当前一组粒子近似于后部分布的程度。较低的有效粒度意味着较低数量的粒子是有助于估计和重采样。

如果有效数量的颗粒与颗粒总数的比率低于最小有效粒度,则触发重采样步骤。

将最小有效粒径指定为0到0的任何值。

依赖关系

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

程序使用

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

重采样之间的固定间隔,指定为一个正标量整数。采样间隔决定了在哪个校正步骤期间执行重采样。例如,值为2表示每隔一秒进行一次重采样。的值意味着永远不会执行重采样。

依赖关系

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

程序使用

块参数:SamplingInterval
类型:正标量整数
默认:1
随机数生成器选项

随机数是否可重复,指定为'可重复'要么'不可重复'.如果您希望能够多次生成相同的结果,请设置随机性'可重复',并指定相同的随机数发生器种子值种子

程序使用

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

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

依赖关系

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

程序使用

块参数:种子
类型:标量子
默认:0.
设置

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

程序使用

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

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

使用采样时间参数如果您的状态转换和所有测量似然具有相同的采样时间。否则,选择使多重速率的操作选项在多重速率的选项卡,并在同一选项卡中指定示例时间。

依赖关系

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

程序使用

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

块输出,多速率选项卡

输出

用于从粒子中提取状态估计的方法,指定为以下其中之一:

  • “的意思是”- 这粒子滤波Block根据参数输出粒子的加权平均值重量粒子,就像州政府估计的那样。

  • “Maxweight”- 这粒子滤波块输出权重最大的粒子作为状态估计。

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

程序使用

块参数:最终于司法方法
类型:字符向量,字符串
价值观:“的意思是”“MaxWeight”“没有”
默认:“的意思是”

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

  • 如果陈辞参数被指定为'柱子',然后将粒子输出为ns.——- - - - - -NP.数组中。ns.是系统的状态数,和NP.是粒子的数量。

  • 如果陈辞参数被指定为'排',然后将粒子输出为NP.——- - - - - -ns.数组中。

程序使用

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

如果选择此参数,则在估计中使用的粒子权重的输出端口,重量在块中生成。

  • 如果陈辞参数被指定为'柱子',则粒子权重以1-by-的形式输出NP.向量。在这里,每个重量都与同一列中的粒子相关联粒子数组中。NP.是用于状态估计的粒子数。

  • 如果陈辞参数被指定为'排',则粒子权重输出为aNP.1的向量。

程序使用

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

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

依赖关系

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

程序使用

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

当选择此参数时,块输出修正后的状态估计 X ^ [ K. | K. ] 在时间步K.,使用测量输出直到时间K..如果清除此参数,则块返回预测状态估计值 X ^ [ K. | K. - 1 ] 时间K.,使用前一时间的测量输出进行估计k - 1.如果过滤器处于反馈循环中,则清除此参数,并且在Simulink模型中有一个代数循环。万博1manbetx

程序使用

块参数:UseCurrentEstimator
类型:特征向量
价值观:'在'“关闭”
默认:'在'
多重速率的

如果状态转移的样本时间或任何测量似然函数的样本时间不同于其他的,请选择此参数。的示例时间多重速率的标签,in.采样时间

程序使用

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

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

  • 状态转换函数对应的端口-状态转换函数的附加输入StateTransitionFcnInputs.这些端口的采样时间必须始终等于状态转换功能采样时间,但可以与测量似然函数的采样时间不同。

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

依赖关系

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

程序使用

块参数:StateTransitionFcnsampletime.MeasurementLikelihoodfcn1sampletime1.MeasurementLikelihoodFCN1Sampletime2.MeasurementLikelihoodFCN1Sampletime3.MeasurementLikelihoodfcn1sampletime4.MeasurementLikelihoodfcn1sampletime5.
类型:字符向量,字符串
默认:'1'

扩展功能

在R2018A介绍