粒子过滤器

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

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

    系统识别工具箱/评估器

描述

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

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

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

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

港口

输入

全部展开

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

指定端口为N-维向量,其中N为相应传感器测量的数量。例如,如果你的系统有一个传感器来测量物体的位置和速度,那么就只有一个端口日元. 这个port is specified as a two-dimensional vector with values corresponding to position and velocity.

依赖关系

第一个港口日元默认为可用。港口y2日元是当你点击添加测量

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

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

如果状态转移函数有多个额外的输入,请使用金宝app仿真软件的功能块指定函数。当你使用金宝app仿真软件的功能块,则直接向金宝app仿真软件的功能块使用轮廓尺寸块。的附加输入不生成输入端口粒子过滤器块。

依赖关系

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

  • 你指定f函数使用MATLAB函数,并f是在MATLAB路径上。

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

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

MeasurementLikelihoodFcn1Inputs对应于您指定的第一个度量可能性函数,等等。

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

如果测量似然函数有多个附加输入,请使用金宝app仿真软件的功能块来指定函数。当你使用金宝app仿真软件的功能块,则直接向金宝app仿真软件的功能块使用轮廓尺寸块。的附加输入不生成输入端口粒子过滤器块。

依赖关系

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

  • 你指定测量输入h函数使用MATLAB函数,并h是在MATLAB路径上。

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

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

例如,考虑测得的输出数据在端口的所有时间点都不可用。日元这对应于第一个测量似然函数。然后,使用一个信号值0Enable1当测量数据可用时,允许修正估计状态的端口。指定端口值为0当测量数据不可用时。类似地,如果在端口的所有时间点上测量的输出数据都不可用y对于th测量似然函数,指定相应的端口启用作为一种价值0

依赖关系

如果您选择添加启用端口对于测量似然函数,生成与该测量似然函数相对应的端口。单击时将显示端口应用

输出

全部展开

估计状态,返回为大小向量Ns,在那里Ns是系统的状态数。要访问各个状态,请使用选择器块。

使用当前度量来改进状态估计参数,则块输出校正的状态估计 x k | k 在时间步k,使用测量输出直到时间k.如果清除此参数,该块将返回预测的状态估计 x k | k 1 暂时k,使用前一时间的测量输出进行估计k - 1.如果你的过滤器在一个反馈循环中,并且在你的Simulink中有一个代数循环,那么清除这个参数金宝app®模型。

状态估计误差协方差,返回为Ns-借-Ns矩阵,在哪里Ns是系统的状态数。要访问单个协方差,请使用选择器块。

只有当您选择时,才能输出误差协方差输出状态估计误差协方差块输出,多重速率的选项卡,并单击应用

依赖关系

中,该参数可用块输出,多重速率的选项卡,状态估计方法参数设置为“中庸”

用于状态估计的粒子值,返回为Ns-借-NpNp-借-Ns数组中。Ns是系统的状态数,和Np为粒子数。

  • 如果StateOrientation参数指定为“列”,然后粒子作为Ns-借-Np数组中。

  • 如果StateOrientation参数指定为“行”,然后粒子作为Np-借-Ns数组中。

依赖关系

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

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

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

  • 如果StateOrientation参数指定为“行”,然后权重作为Np-by-1向量,其中每个权重与在同一行中的粒子相关联粒子数组中。

依赖关系

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

参数

全部展开

系统模型选项卡

状态转换

粒子滤波状态转移函数在时间步长计算粒子k + 1,给定时间步长上的粒子k根据系统的动态和过程噪声。这个函数的语法如下:

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

在那里,粒子particlesNext有尺寸Ns-借-Np如果国家导向被指定为“列”,或Np-借-Ns如果国家导向被指定为“行”.同时,param_i表示您可以指定的可选输入参数。有关可选输入参数的详细信息,请参阅StateTransitionFcnInputs

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

您可以创建函数使用一个金宝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输出为a [1Ns]向量。

编程使用

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

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

th列列出了粒子初始分布均匀分布的下界和上界th状态

依赖关系

中,该参数可用系统模型选项卡,分布参数设置为制服

编程使用

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

用于状态估计的自定义粒子分布,指定为Ns-借-NpNp-借-Ns数组中。Ns是系统的状态数,和Np为粒子数。

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

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

依赖关系

中,该参数可用系统模型选项卡,分布参数设置为风俗

编程使用

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

自定义粒子权重值的状态估计,指定为1 by-NpNp-乘1的正向量Np是用于状态估计的粒子数。

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

  • 如果StateOrientation参数指定为“行”,然后权重是一个Np-by-1向量。向量中的每个权重都与中同一行中的粒子相关联粒子数组中。

依赖关系

中,该参数可用系统模型选项卡,分布参数设置为风俗

编程使用

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

测量

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

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

中创建度量可能性函数并指定函数名称函数。例如,如果vdpMeasurementLikelihoodFcn.m您创建并保存的度量可能性函数是否指定函数作为“vdpMeasurementLikelihoodFcn”

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

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

    该软件生成一个额外的输入端口MeasurementLikelihoodFcn输入为。指定此参数th测量似然函数,点击应用

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

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

编程使用

块参数:测量似然系数fcn1测量似然系数fcn2测量可能性FCN3测量似然系数Fcn4测量可能性FCN5
类型:特征向量,字符串
默认值:“vdpMeasurementLikelihoodFcn”

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

编程使用

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

重采样

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

  • 多项式的

  • “系统”

  • “分层”

编程使用

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

方法确定何时发生重采样,指定为“比”“间隔”. 这个“比”值触发基于有效总粒子比例的重采样。的“间隔”值触发粒子滤波操作的规则时间步重采样。

编程使用

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

有效粒子数与总粒子数的最小期望比率,指定为正标量。粒子的有效数量是当前粒子集合近似后验分布的程度的度量。较低的有效粒子比意味着参与估计和重采样的粒子数较低。

当有效粒子数与总粒子数之比低于最小有效粒子数比时,触发重采样步骤。

指定最小有效粒子比为从0到1的任意值。

依赖关系

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

编程使用

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

固定的重采样间隔,指定为正标量整数。采样间隔确定执行重采样的校正步骤。例如,值为2意味着每秒钟执行一次重采样校正步骤。价值inf意味着永远不会执行重采样。

依赖关系

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

编程使用

块参数:SamplingInterval
类型:积极的标量整数
默认值:1

随机数生成器选项

随机数是否可重复,指定为任意一个“重复”不可重复的.如果您希望能够多次生成相同的结果,请设置随机性“重复”,并指定相同的随机数生成器种子值种子

编程使用

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

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

依赖关系

中,该参数可用系统模型选项卡,随机性参数设置为“重复”

编程使用

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

设置

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

编程使用

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

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

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

依赖关系

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

编程使用

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

块输出,多速率选项卡

输出

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

  • “中庸”- - -粒子过滤器Block根据参数输出粒子的加权平均值权重粒子,就像州政府估计的那样。

  • “最大重量”- - -粒子过滤器块输出权重最大的粒子作为状态估计。

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

编程使用

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

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

  • 如果StateOrientation参数指定为“列”,则粒子输出为Ns-借-Np数组中。Ns是系统的状态数,和Np为粒子数。

  • 如果StateOrientation参数指定为“行”,则粒子输出为Np-借-Ns数组中。

编程使用

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

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

  • 如果StateOrientation参数指定为“列”,则粒子权重以1-by-的形式输出Np向量。这里,每个权重与粒子数组中。Np是用于状态估计的粒子数。

  • 如果StateOrientation参数指定为“行”,然后将粒子权重输出为Np1的向量。

编程使用

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

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

依赖关系

中,该参数可用块输出,多重速率的选项卡,状态估计方法参数设置为“中庸”

编程使用

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

当选择此参数时,块输出修正后的状态估计 x k | k 在时间步k,使用测量输出直到时间k.如果清除此参数,该块将返回预测的状态估计 x k | k 1 暂时k,使用前一时间的测量输出进行估计k - 1.如果您的过滤器处于反馈循环中,并且在您的Simulink模型中存在代数循环,则清除此参数。金宝app

编程使用

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

多重速率的

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

编程使用

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

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

  • 状态转换函数对应的端口-状态转换函数的附加输入StateTransitionFcnInputs. 这个sample times of these ports must always equal the state transition function sample time, but can differ from the sample time of the measurement likelihood functions.

  • 相对应的端口th测量似然函数-测量输出y,测量似然函数的附加输入MeasurementLikelihoodFcn输入,在端口启用信号启用. 这个sample times of these ports for the same measurement likelihood function must always be the same, but can differ from the sample time for the state transition function and other measurement likelihood functions.

依赖关系

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

编程使用

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

扩展功能

介绍了R2018a