主要内容

粒子滤波

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

  • 库:
  • 控制系统工具箱/状态估计

    系统辨识工具箱/估计

  • pf_block

描述

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

考虑植物与状态x、输入u、输出、过程噪声w,测量y。假设您能代表植物作为非线性系统。

该算法计算状态估计 x ^ 非线性系统的使用状态转换和测量功能您指定可能性。

您创建的非线性状态转换函数和似然函数测量系统和指定的这些功能块。块支持系统的状态估计金宝app与多个传感器,操作在不同的采样率。您可以指定五测量似然函数,每个对应一个传感器系统。

港口

输入

全部展开

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

指定的端口N维向量,N是数量的数量来衡量相应的传感器。例如,如果你的系统有一个传感器,测量一个物体的位置和速度,然后只有一个端口日元。港口被指定为一个二维矢量值对应的位置和速度。

依赖关系

第一个港口日元在默认情况下是可用的。港口y2日元当你点击生成添加测量

可选的输入参数状态转换函数f以外的国家x

如果您创建f使用MATLAB®函数(。米文件),软件生成端口StateTransitionFcnInputs当你进入你的函数的名称,然后单击应用

如果你的状态转换函数有多个额外的输入,使用金宝app仿真软件的功能(金宝app模型)块指定函数。当你使用金宝app仿真软件的功能块,直接向你提供额外的输入金宝app仿真软件的功能块使用轮廓尺寸(金宝app模型)块。没有输入端口生成的额外输入的粒子滤波块。

依赖关系

这个端口生成只有在满足以下两个条件:

  • 你指定f函数使用MATLAB函数f在MATLAB的道路。

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

可选的输入测量功能以外的可能性x和测量y

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

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

如果你测量似然函数有多个额外的输入,使用金宝app仿真软件的功能(金宝app模型)块指定功能。当你使用金宝app仿真软件的功能块,直接向你提供额外的输入金宝app仿真软件的功能块使用轮廓尺寸(金宝app模型)块。没有输入端口生成的额外输入的粒子滤波块。

依赖关系

一个端口对应一个测量似然函数h只有在生成满足下面两个条件:

  • 您指定测量输入h函数使用MATLAB函数h在MATLAB的道路。

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

使校正估计状态的测量数据是可用的。

例如,考虑测量输出数据不可用的时间点在港口日元对应于第一个测量似然函数。然后,使用价值以外的一个信号0Enable1端口,使估计的修正状态时测量数据是可用的。指定端口值0当测量数据是不可用的。类似地,如果测量输出数据不可用港口的时间点yth测量似然函数,指定相应的端口启用除了作为一个值0

依赖关系

如果您选择添加启用端口测量似然函数,生成一个端口对应测量似然函数。港口出现当你点击应用

输出

全部展开

估计状态,作为一个向量返回的大小Ns,在那里Ns是系统的状态数。访问各州,使用选择器(金宝app模型)块。

使用电流测量提高状态估计参数被选中时,块输出修正状态估计 x ^ ( k | k ] 在时间步k直到时间估计,使用测量输出k。如果你清楚这个参数,预测块返回状态估计 x ^ ( k | k 1 ] 时间k估计,使用测量输出,直到前一个时间k - 1。明确该参数如果你的过滤器是一个反馈回路,一个代数循环在你的模型金宝app®模型。

状态估计误差协方差,作为一个返回Ns——- - - - - -Ns矩阵,Ns是系统的状态数。访问个人协方差,使用选择器(金宝app模型)块。

你只能输出误差协方差,如果你选择输出状态估计误差协方差块输出,多重速率的选项卡,并单击应用

依赖关系

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

粒子值用于状态估计,作为一个返回Ns——- - - - - -NpNp——- - - - - -Ns数组中。Ns系统的状态数,Np是粒子的数量。

  • 如果StateOrientation参数被指定为“列”,然后粒子作为一个返回Ns——- - - - - -Np数组中。

  • 如果StateOrientation参数被指定为“行”,然后粒子作为一个返回Np——- - - - - -Ns数组中。

依赖关系

如果您选择生成这个端口输出所有粒子块输出,多重速率的选项卡,并单击应用

粒子权值用于状态估计,作为1 -返回NpNp1的向量,Np是粒子的数量用于状态估计。

  • 如果StateOrientation参数被指定为“列”,然后权重返回1 -Np向量,其中每个重量与粒子在同一列中粒子数组中。

  • 如果StateOrientation参数被指定为“行”,然后权重作为一个返回Np1的向量,其中每个重量与粒子在同一行粒子数组中。

依赖关系

如果您选择生成这个端口输出权值块输出,多重速率的选项卡,并单击应用

参数

全部展开

系统模型选项卡

状态转换

粒子滤波状态转换函数计算粒子在时间步k + 1,考虑到粒子在时间步k每个系统的动力学和过程噪声。这个函数的语法:

particlesNext = f(粒子,param1 param2,…)

在那里,粒子particlesNext有尺寸Ns——- - - - - -Np如果国家取向被指定为“列”,或Np——- - - - - -Ns如果国家取向被指定为“行”。同时,param_i代表你可以指定可选的输入参数。可选的输入参数的更多信息,请参阅StateTransitionFcnInputs

您创建状态转换函数和指定的函数名函数。例如,如果vdpParticleFilterStateFcn.m是你创建并保存状态转换函数,指定吗函数作为“vdpParticleFilterStateFcn”

您可以创建函数使用一个金宝app仿真软件的功能(金宝app模型)块或MATLAB函数(。米文件)。

编程使用

块参数:StateTransitionFcn
类型:特征向量,字符串
默认值:“vdpParticleFilterStateFcn”
初始化

指定数量的粒子滤波器中使用,作为一个积极的标量整数。系统中每个粒子代表一个国家的假设。更高的粒子数增加了状态估计精度,但计算工作量也增加了运行过滤器。

编程使用

块参数:NumberOfParticles
类型:积极的标量整数
默认值:1000年

粒子的初始分布,指定为“高斯”,“统一”,或“自定义”

如果你选择“高斯”,粒子或状态的初始假设分布的多元高斯分布,你指定的地方的意思是协方差。所有粒子的初始重量被认为是相等的。

如果你选择“统一”,最初的粒子分布均匀分布,在你指定的上半部分和下半部分国家边界。所有粒子的初始重量被认为是相等的。

“自定义”允许您指定您自己的设置的初始粒子及其权重。您可以使用任意的概率分布粒子权重初始化过滤器。

编程使用

块参数:InitialDistribution
类型:特征向量
价值观:“高斯”,“统一”,“自定义”
默认值:“高斯”

粒子的初始值,指定为一个向量。州的数量估计定义了向量的长度。

依赖关系

如果在这个参数是可用的系统模型选项卡,分布参数设置为高斯

编程使用

块参数:InitialMean
类型:数组
默认值:(0,0)

初始粒子的协方差,指定为一个标量、向量或矩阵。

如果协方差被指定为:

  • 一个标量,那么它必须是正的。协方差被认为是一种(NsNs与这个标量]矩阵对角线。在这里,Ns的状态数。

  • 一个向量,那么每个元素必须是正的。协方差被认为是一种(NsNs]矩阵对角线上的元素的向量。

  • 一个矩阵,那么它必须半正定。

依赖关系

如果在这个参数是可用的系统模型选项卡,分布参数设置为高斯

编程使用

块参数:InitialCovariance
类型:标量、向量或矩阵
默认值:1

循环变量用于状态估计,或指定为一个标量Ns元向量,Ns的状态数。

如果循环变量被指定为一个标量,软件扩展到向量中每个元素等于这个标量。使用一个圆形(或角度)分布概率密度函数的(π]。使用循环变量,如果您的系统的一些州代表对象的定位之类的角量。

编程使用

块参数:CircularVariables
类型:标量、矢量
默认值:0

定位系统的状态,指定为“列”“行”

如果国家取向被指定为:

  • “列”状态转换,然后第一个输入参数和测量似然函数NsNp]。在这种情况下,th这个矩阵的列th粒子(状态假设)。此外,美国估计xhat输出为(Ns(1)向量。在这里,Ns的状态数,Np是粒子的数量。

  • “行”状态转换,然后第一个输入参数和测量似然函数NpNs,这个矩阵的每一行包含一个粒子。此外,美国估计xhat输出为[1Ns)向量。

编程使用

块参数:StateOrientation
类型:特征向量
价值观:“列”,“行”
默认值:“列”

系统状态初始边界,指定为一个Ns2数组,Ns的状态数。

th行列出了低,上界的均匀分布的初始分布的粒子th状态。

依赖关系

如果在这个参数是可用的系统模型选项卡,分布参数设置为统一的

编程使用

块参数:InitialStateBounds
类型:数组
默认值:(3 3 3;3)

自定义粒子分布状态估计,指定为一个Ns——- - - - - -NpNp——- - - - - -Ns数组中。Ns系统的状态数,Np是粒子的数量。

  • 如果StateOrientation参数被指定为“列”,然后粒子是一个Ns——- - - - - -Np数组中。

  • 如果StateOrientation参数被指定为“行”,然后粒子是一个Np——- - - - - -Ns数组中。

依赖关系

如果在这个参数是可用的系统模型选项卡,分布参数设置为自定义

编程使用

块参数:InitialParticles
类型:数组
默认值:[]

自定义粒子状态估计的重量值,指定为1×-NpNp1积极的向量,Np是粒子的数量用于状态估计。

  • 如果StateOrientation参数被指定为“列”,然后权重是1 -Np向量。向量中每个重量与粒子在同一列中粒子数组中。

  • 如果StateOrientation参数被指定为“行”,然后权重是一个Np1的向量。向量中每个重量与粒子在同一行粒子数组中。

依赖关系

如果在这个参数是可用的系统模型选项卡,分布参数设置为自定义

编程使用

块参数:InitialWeights
类型:积极的向量
默认值:[]
测量

测量似然函数计算粒子的可能性(状态假设)使用传感器测量。对于每个状态的假设(粒子),首先计算一个函数纳米有效测量假设向量。那么每个测量的可能性假设计算基于传感器测量和测量噪声概率分布。这个函数的语法:

可能性= h(粒子,测量,param1 param2,…)
在那里,可能性是一个Np元向量,Np是粒子的数量。粒子有尺寸Ns——- - - - - -Np如果国家取向被指定为“列”,或Np——- - - - - -Ns如果国家取向被指定为“行”测量是一个纳米元向量,纳米是测量传感器提供的数量。param_i代表你可以指定可选的输入参数。可选的输入参数的更多信息,请参阅MeasurementLikelihoodFcn1Inputs,…, MeasurementLikelihoodFcn5Inputs

您将创建测量似然函数和指定的函数名函数。例如,如果vdpMeasurementLikelihoodFcn.m是你创建并保存测量似然函数,指定吗函数作为“vdpMeasurementLikelihoodFcn”

您可以创建函数使用一个金宝app仿真软件的功能(金宝app模型)块或MATLAB函数(。米文件)。

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

    软件生成一个额外的输入端口MeasurementLikelihoodFcn输入指定这个论点的th测量似然函数,然后单击应用

  • 如果您使用的是金宝app仿真软件的功能块,指定xy使用参数尺寸。(金宝app模型)块和额外的输入param_i使用轮廓尺寸(金宝app模型)块的金宝app仿真软件的功能块。你不提供param_i粒子滤波块。

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

编程使用

块参数:MeasurementLikelihoodFcn1,MeasurementLikelihoodFcn2,MeasurementLikelihoodFcn3,MeasurementLikelihoodFcn4,MeasurementLikelihoodFcn5
类型:特征向量,字符串
默认值:“vdpMeasurementLikelihoodFcn”

假设测量输出数据不可用港口的时间点日元对应于第一个测量似然函数。生成一个输入端口Enable1中,选择添加启用端口。在这个端口使用一个信号使估计状态的调整只有当测量数据是可用的。类似地,如果测量输出数据不可用港口的时间点yth测量似然函数,选择相应的添加启用端口

编程使用

块参数:HasMeasurementEnablePort1,HasMeasurementEnablePort2,HasMeasurementEnablePort3,HasMeasurementEnablePort4,HasMeasurementEnablePort5
类型:特征向量
价值观:“关闭”,“上”
默认值:“关闭”
重采样

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

  • 多项式的——多项式重采样,也叫简化随机抽样,生成的N均匀分布的随机数独立开区间(0,1)并使用它们来选择粒子与体重成正比。

  • “分层”——分层重采样粒子的整个人口分为子集称为地层。它pre-partitions(0,1)时间间隔为N不相交的子区间的大小1 / N。随机数是画在每个子区间和独立样本指标选择地层。

  • “系统”——系统重采样是类似于它还利用地层分层重采样。唯一的区别是它吸引了一个开区间的随机数(0,1 / N)剩下的在一个固定的采样点的计算是确定的1 / N步长。

编程使用

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

方法来确定当发生重采样时,指定为“比”“间隔”。的“比”值触发重采样率的基础上有效的总粒子。的“间隔”价值在固定时间触发重采样的粒子滤波操作步骤。

编程使用

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

最低预期的有效粒子数比粒子的总数,指定为一个积极的标量。有效粒子数是衡量当前的粒子集的近似后验分布。低有效的粒子比意味着低导致了估计和重采样的粒子数量是必需的。

如果有效粒子数的比值的粒子总数低于最小有效粒子比,重采样步骤触发。

最低有效粒子比指定为任何值从0到1。

依赖关系

如果在这个参数是可用的系统模型选项卡,触发方法参数设置为

编程使用

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

固定的重采样的时间间隔,指定为一个积极的标量整数。采样间隔决定了在此期间执行重采样校正步骤。例如,两个意味着重新采样的值是每秒钟执行校正步骤。的值意味着永远不会执行重采样。

依赖关系

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

编程使用

块参数:SamplingInterval
类型:积极的标量整数
默认值:1
随机数发生器的选择

是否可重复的随机数,指定为“重复”不可重复的。如果你想成为能够产生相同的结果不止一次随机性“重复”,并指定相同的随机数生成器的种子值种子

编程使用

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

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

依赖关系

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

编程使用

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

使用这个参数来指定所有块参数的数据类型。

编程使用

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

块样品时间,指定为一个积极的标量。

使用样品时间参数如果你的状态转换和测量似然函数有相同的样本。否则,选择使多重速率的操作选项多重速率的选项卡,指定样本乘以相同的选项卡。

依赖关系

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

编程使用

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

块输出,多重速率的选项卡

输出

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

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

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

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

编程使用

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

如果您选择这个参数,输出端口用于估计的粒子,粒子生成的块。

  • 如果StateOrientation参数被指定为“列”,然后输出作为一个粒子Ns——- - - - - -Np数组中。Ns系统的状态数,Np是粒子的数量。

  • 如果StateOrientation参数被指定为“行”,然后输出作为一个粒子Np——- - - - - -Ns数组中。

编程使用

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

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

  • 如果StateOrientation参数被指定为“列”,然后输出1,粒子权重Np向量。在这里,每个重量与粒子在同一列中粒子数组中。Np是粒子的数量用于状态估计。

  • 如果StateOrientation参数被指定为“行”,那么粒子权值作为输出Np1的向量。

编程使用

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

如果您选择这个参数,状态估计误差协方差输出端口,P生成的块。

依赖关系

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

编程使用

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

这个参数被选中时,块输出修正状态估计 x ^ ( k | k ] 在时间步k直到时间估计,使用测量输出k。如果你清楚这个参数,预测块返回状态估计 x ^ ( k | k 1 ] 时间k估计,使用测量输出,直到前一个时间k - 1。明确该参数如果你的过滤器是一个反馈回路和有一个代数环仿真软件模型。金宝app

编程使用

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

选择该参数如果样品测量的状态转换或任何时期功能不同于其他可能性。你指定的样例次多重速率的选项卡,在样品时间

编程使用

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

如果样品时间状态转换和测量似然函数是不同的,指定样品时间。指定样品时间测量功能正整数倍数的状态转换样品时间。您所指定的样品时间对应于以下输入端口:

  • 端口对应的状态转换函数——额外的输入状态转换函数StateTransitionFcnInputs。样品的时候这些端口必须始终等于状态转换时间样本函数,但可以从样本不同时间的测量功能的可能性。

  • 相对应的端口th似然函数测量,测量输出y额外的输入,测量似然函数MeasurementLikelihoodFcn输入港,使信号启用。这些端口的样品时间为同一测量似然函数必须是相同的,但不同的样品时间状态转换函数和其他测量功能的可能性。

依赖关系

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

编程使用

块参数:StateTransitionFcnSampleTime,MeasurementLikelihoodFcn1SampleTime1,MeasurementLikelihoodFcn1SampleTime2,MeasurementLikelihoodFcn1SampleTime3,MeasurementLikelihoodFcn1SampleTime4,MeasurementLikelihoodFcn1SampleTime5
类型:特征向量,字符串
默认值:' 1 '

引用

下午李[1]t . m . Bolic Djuric,“重采样的粒子滤波方法:分类、实现和战略,”IEEE信号处理杂志,32卷,不。3、2015年5月,页70 - 86。

扩展功能

版本历史

介绍了R2018a