粒子滤波
使用粒子滤波估计状态的离散时间非线性系统
- 库:
控制系统工具箱/状态估计
系统辨识工具箱/估计
描述
的粒子滤波块离散时间非线性系统的状态估计使用离散粒子滤波算法。
考虑植物与状态x、输入u、输出米、过程噪声w,测量y。假设您能代表植物作为非线性系统。
该算法计算状态估计 非线性系统的使用状态转换和测量功能您指定可能性。
您创建的非线性状态转换函数和似然函数测量系统和指定的这些功能块。块支持系统的状态估计金宝app与多个传感器,操作在不同的采样率。您可以指定五测量似然函数,每个对应一个传感器系统。
港口
输入
y1、y2、y3、y4,日元
——测量系统输出
向量
测量系统输出对应于每个测量似然函数中指定块。港口的数量等于系统的测量功能的可能性。您可以指定五测量功能的可能性。例如,如果你的系统有两个传感器,你指定两个测量功能块的可能性。第一个港口日元在默认情况下是可用的。点击添加测量生成端口y2对应于第二测量似然函数。
指定的端口N维向量,N是数量的数量来衡量相应的传感器。例如,如果你的系统有一个传感器,测量一个物体的位置和速度,然后只有一个端口日元。港口被指定为一个二维矢量值对应的位置和速度。
依赖关系
第一个港口日元在默认情况下是可用的。港口y2来日元当你点击生成添加测量。
StateTransitionFcnInputs
可选的输入参数,状态转换函数
标量| |向量矩阵
可选的输入参数状态转换函数f
以外的国家x
。
如果您创建f
使用MATLAB®函数(。米
文件),软件生成端口StateTransitionFcnInputs当你进入你的函数的名称,然后单击应用。
如果你的状态转换函数有多个额外的输入,使用金宝app仿真软件的功能(金宝app模型)块指定函数。当你使用金宝app仿真软件的功能块,直接向你提供额外的输入金宝app仿真软件的功能块使用轮廓尺寸(金宝app模型)块。没有输入端口生成的额外输入的粒子滤波块。
依赖关系
这个端口生成只有在满足以下两个条件:
你指定
f
在函数使用MATLAB函数f
在MATLAB的道路。f
只需要一个额外的输入参数除了粒子。
MeasurementLikelihoodFcn1Inputs,…, MeasurementLikelihoodFcn5Inputs
-可选的输入参数为每个测量似然函数
标量| |向量矩阵
可选的输入测量功能以外的可能性x
和测量y
。
MeasurementLikelihoodFcn1Inputs对应于第一个测量您指定的似然函数,等等。
如果指定两个测量输入使用MATLAB函数(。米
文件)函数,软件生成港口MeasurementLikelihoodFcn1Inputs和MeasurementLikelihoodFcn2Inputs当你点击应用。您可以指定这些端口的输入标量、向量或矩阵。
如果你测量似然函数有多个额外的输入,使用金宝app仿真软件的功能(金宝app模型)块指定功能。当你使用金宝app仿真软件的功能块,直接向你提供额外的输入金宝app仿真软件的功能块使用轮廓尺寸(金宝app模型)块。没有输入端口生成的额外输入的粒子滤波块。
依赖关系
一个端口对应一个测量似然函数h
只有在生成满足下面两个条件:
您指定测量输入
h
在函数使用MATLAB函数h
在MATLAB的道路。h
只需要一个额外的输入参数除了粒子和测量。
Enable1、Enable2 Enable3、Enable4 Enable5
——允许修正估计状态的测量数据是可用的
标量
使校正估计状态的测量数据是可用的。
例如,考虑测量输出数据不可用的时间点在港口日元对应于第一个测量似然函数。然后,使用价值以外的一个信号0
在Enable1端口,使估计的修正状态时测量数据是可用的。指定端口值0
当测量数据是不可用的。类似地,如果测量输出数据不可用港口的时间点y我
为我th测量似然函数,指定相应的端口启用我
除了作为一个值0
。
依赖关系
如果您选择添加启用端口测量似然函数,生成一个端口对应测量似然函数。港口出现当你点击应用。
输出
xhat
——估计状态
向量
估计状态,作为一个向量返回的大小Ns,在那里Ns是系统的状态数。访问各州,使用选择器(金宝app模型)块。
当使用电流测量提高状态估计参数被选中时,块输出修正状态估计
在时间步k
直到时间估计,使用测量输出k
。如果你清楚这个参数,预测块返回状态估计
时间k
估计,使用测量输出,直到前一个时间k - 1
。明确该参数如果你的过滤器是一个反馈回路,一个代数循环在你的模型金宝app®模型。
P
状态估计误差协方差
矩阵
状态估计误差协方差,作为一个返回Ns——- - - - - -Ns矩阵,Ns是系统的状态数。访问个人协方差,使用选择器(金宝app模型)块。
你只能输出误差协方差,如果你选择输出状态估计误差协方差在块输出,多重速率的选项卡,并单击应用。
依赖关系
如果在这个参数是可用的块输出,多重速率的选项卡,状态估计方法参数设置为“的意思是”
。
粒子
——粒子值用于状态估计
数组
粒子值用于状态估计,作为一个返回Ns——- - - - - -Np或Np——- - - - - -Ns数组中。Ns系统的状态数,Np是粒子的数量。
如果
StateOrientation
参数被指定为“列”
,然后粒子作为一个返回Ns——- - - - - -Np数组中。如果
StateOrientation
参数被指定为“行”
,然后粒子作为一个返回Np——- - - - - -Ns数组中。
依赖关系
如果您选择生成这个端口输出所有粒子在块输出,多重速率的选项卡,并单击应用。
权重
——粒子权值用于状态估计
向量
粒子权值用于状态估计,作为1 -返回Np或Np1的向量,Np是粒子的数量用于状态估计。
如果
StateOrientation
参数被指定为“列”
,然后权重返回1 -Np向量,其中每个重量与粒子在同一列中粒子
数组中。如果
StateOrientation
参数被指定为“行”
,然后权重作为一个返回Np1的向量,其中每个重量与粒子在同一行粒子
数组中。
依赖关系
如果您选择生成这个端口输出权值在块输出,多重速率的选项卡,并单击应用。
参数
系统模型选项卡
状态转换函数
——状态转换函数名
“vdpParticleFilterStateFcn”
(默认)|函数名
粒子滤波状态转换函数计算粒子在时间步k + 1,考虑到粒子在时间步k每个系统的动力学和过程噪声。这个函数的语法:
particlesNext = f(粒子,param1 param2,…)
在那里,粒子和particlesNext有尺寸Ns——- - - - - -Np如果国家取向被指定为“列”
,或Np——- - - - - -Ns如果国家取向被指定为“行”
。同时,param_i
代表你可以指定可选的输入参数。可选的输入参数的更多信息,请参阅StateTransitionFcnInputs。
您创建状态转换函数和指定的函数名函数。例如,如果vdpParticleFilterStateFcn.m
是你创建并保存状态转换函数,指定吗函数作为“vdpParticleFilterStateFcn”
。
您可以创建函数使用一个金宝app仿真软件的功能(金宝app模型)块或MATLAB函数(。米
文件)。
编程使用
块参数:StateTransitionFcn |
类型:特征向量,字符串 |
默认值:“vdpParticleFilterStateFcn” |
粒子数
——数量的粒子滤波器中使用
1000(默认)|积极标量整数
指定数量的粒子滤波器中使用,作为一个积极的标量整数。系统中每个粒子代表一个国家的假设。更高的粒子数增加了状态估计精度,但计算工作量也增加了运行过滤器。
编程使用
块参数:NumberOfParticles |
类型:积极的标量整数 |
默认值:1000年 |
分布
——初始粒子的分布
“高斯”
(默认)|“统一”
|“自定义”
粒子的初始分布,指定为“高斯”
,“统一”
,或“自定义”
。
如果你选择“高斯”
,粒子或状态的初始假设分布的多元高斯分布,你指定的地方的意思是和协方差。所有粒子的初始重量被认为是相等的。
如果你选择“统一”
,最初的粒子分布均匀分布,在你指定的上半部分和下半部分国家边界。所有粒子的初始重量被认为是相等的。
“自定义”
允许您指定您自己的设置的初始粒子及其权重。您可以使用任意的概率分布粒子和权重初始化过滤器。
编程使用
块参数:InitialDistribution |
类型:特征向量 |
价值观:“高斯” ,“统一” ,“自定义” |
默认值:“高斯” |
的意思是
——初始值的粒子
(0,0)(默认)|向量
粒子的初始值,指定为一个向量。州的数量估计定义了向量的长度。
依赖关系
如果在这个参数是可用的系统模型选项卡,分布参数设置为高斯
。
编程使用
块参数:InitialMean |
类型:数组 |
默认值:(0,0) |
协方差
——初始粒子的协方差
1(默认)|标量| |向量矩阵
初始粒子的协方差,指定为一个标量、向量或矩阵。
如果协方差被指定为:
一个标量,那么它必须是正的。协方差被认为是一种(NsNs与这个标量]矩阵对角线。在这里,Ns的状态数。
一个向量,那么每个元素必须是正的。协方差被认为是一种(NsNs]矩阵对角线上的元素的向量。
一个矩阵,那么它必须半正定。
依赖关系
如果在这个参数是可用的系统模型选项卡,分布参数设置为高斯
。
编程使用
块参数:InitialCovariance |
类型:标量、向量或矩阵 |
默认值:1 |
循环变量
——循环变量用于状态估计
0(默认)|标量|向量
循环变量用于状态估计,或指定为一个标量Ns元向量,Ns的状态数。
如果循环变量被指定为一个标量,软件扩展到向量中每个元素等于这个标量。使用一个圆形(或角度)分布概率密度函数的(-π
π
]。使用循环变量,如果您的系统的一些州代表对象的定位之类的角量。
编程使用
块参数:CircularVariables |
类型:标量、矢量 |
默认值:0 |
国家取向
——输入系统状态的取向
“列”
(默认)|“行”
定位系统的状态,指定为“列”
或“行”
。
如果国家取向被指定为:
“列”
状态转换,然后第一个输入参数和测量似然函数NsNp]。在这种情况下,我th这个矩阵的列我th粒子(状态假设)。此外,美国估计xhat输出为(Ns(1)向量。在这里,Ns的状态数,Np是粒子的数量。“行”
状态转换,然后第一个输入参数和测量似然函数NpNs,这个矩阵的每一行包含一个粒子。此外,美国估计xhat输出为[1Ns)向量。
编程使用
块参数:StateOrientation |
类型:特征向量 |
价值观:“列” ,“行” |
默认值:“列” |
国家边界
——初始边界系统状态
(3 3 3;3)(默认)|数组
系统状态初始边界,指定为一个Ns2数组,Ns的状态数。
的我th行列出了低,上界的均匀分布的初始分布的粒子我th状态。
依赖关系
如果在这个参数是可用的系统模型选项卡,分布参数设置为统一的
。
编程使用
块参数:InitialStateBounds |
类型:数组 |
默认值:(3 3 3;3) |
粒子
——自定义粒子分布状态估计
[](默认)|数组
自定义粒子分布状态估计,指定为一个Ns——- - - - - -Np或Np——- - - - - -Ns数组中。Ns系统的状态数,Np是粒子的数量。
如果
StateOrientation
参数被指定为“列”
,然后粒子是一个Ns——- - - - - -Np数组中。如果
StateOrientation
参数被指定为“行”
,然后粒子是一个Np——- - - - - -Ns数组中。
依赖关系
如果在这个参数是可用的系统模型选项卡,分布参数设置为自定义
。
编程使用
块参数:InitialParticles |
类型:数组 |
默认值:[] |
权重
——自定义粒子状态估计的重量值
[](默认)|正向量
自定义粒子状态估计的重量值,指定为1×-Np或Np1积极的向量,Np是粒子的数量用于状态估计。
如果
StateOrientation
参数被指定为“列”
,然后权重是1 -Np向量。向量中每个重量与粒子在同一列中粒子
数组中。如果
StateOrientation
参数被指定为“行”
,然后权重是一个Np1的向量。向量中每个重量与粒子在同一行粒子
数组中。
依赖关系
如果在这个参数是可用的系统模型选项卡,分布参数设置为自定义
。
编程使用
块参数:InitialWeights |
类型:积极的向量 |
默认值:[] |
函数
——测量似然函数的名字
“vdpMeasurementLikelihoodFcn”
(默认)|函数名
测量似然函数计算粒子的可能性(状态假设)使用传感器测量。对于每个状态的假设(粒子),首先计算一个函数纳米有效测量假设向量。那么每个测量的可能性假设计算基于传感器测量和测量噪声概率分布。这个函数的语法:
可能性= h(粒子,测量,param1 param2,…)
“列”
,或Np——- - - - - -Ns如果国家取向被指定为“行”
。测量是一个纳米元向量,纳米是测量传感器提供的数量。param_i代表你可以指定可选的输入参数。可选的输入参数的更多信息,请参阅MeasurementLikelihoodFcn1Inputs,…, MeasurementLikelihoodFcn5Inputs。
您将创建测量似然函数和指定的函数名函数。例如,如果vdpMeasurementLikelihoodFcn.m
是你创建并保存测量似然函数,指定吗函数作为“vdpMeasurementLikelihoodFcn”
。
您可以创建函数使用一个金宝app仿真软件的功能(金宝app模型)块或MATLAB函数(。米
文件)。
如果您有多个传感器在你的系统中,您可以指定多个测量功能的可能性。您可以指定五测量功能使用的可能性添加测量按钮。删除测量似然函数,使用删除测量。
编程使用
块参数:MeasurementLikelihoodFcn1 ,MeasurementLikelihoodFcn2 ,MeasurementLikelihoodFcn3 ,MeasurementLikelihoodFcn4 ,MeasurementLikelihoodFcn5 |
类型:特征向量,字符串 |
默认值:“vdpMeasurementLikelihoodFcn” |
添加启用端口
——允许修正估计国家只有当测量数据是可用的
从
(默认)|在
假设测量输出数据不可用港口的时间点日元对应于第一个测量似然函数。生成一个输入端口Enable1中,选择添加启用端口。在这个端口使用一个信号使估计状态的调整只有当测量数据是可用的。类似地,如果测量输出数据不可用港口的时间点y我
为我th测量似然函数,选择相应的添加启用端口。
编程使用
块参数:HasMeasurementEnablePort1 ,HasMeasurementEnablePort2 ,HasMeasurementEnablePort3 ,HasMeasurementEnablePort4 ,HasMeasurementEnablePort5 |
类型:特征向量 |
价值观:“关闭” ,“上” |
默认值:“关闭” |
重采样方法
——用于粒子重采样方法
多项式的
(默认)|“系统性”
|“分层”
用于粒子重采样方法,指定为以下之一:
多项式的
——多项式重采样,也叫简化随机抽样,生成的N
均匀分布的随机数独立开区间(0,1)
并使用它们来选择粒子与体重成正比。“分层”
——分层重采样粒子的整个人口分为子集称为地层。它pre-partitions(0,1)
时间间隔为N
不相交的子区间的大小1 / N
。随机数是画在每个子区间和独立样本指标选择地层。“系统”
——系统重采样是类似于它还利用地层分层重采样。唯一的区别是它吸引了一个开区间的随机数(0,1 / N)
剩下的在一个固定的采样点的计算是确定的1 / N
步长。
编程使用
块参数:ResamplingMethod |
类型:特征向量 |
价值观:多项式的 ,“系统性” ,“分层” |
默认值:多项式的 |
触发方法
——确定当发生重采样方法
“比”
(默认)|“间隔”
方法来确定当发生重采样时,指定为“比”
或“间隔”
。的“比”
值触发重采样率的基础上有效的总粒子。的“间隔”
价值在固定时间触发重采样的粒子滤波操作步骤。
编程使用
块参数:TriggerMethod |
类型:特征向量 |
价值观:“比” ,“间隔” |
默认值:“比” |
最低有效粒子比
——最小所需的有效粒子数比粒子的总数
0.5(默认)|积极的标量
最低预期的有效粒子数比粒子的总数,指定为一个积极的标量。有效粒子数是衡量当前的粒子集的近似后验分布。低有效的粒子比意味着低导致了估计和重采样的粒子数量是必需的。
如果有效粒子数的比值的粒子总数低于最小有效粒子比,重采样步骤触发。
最低有效粒子比指定为任何值从0到1。
依赖关系
如果在这个参数是可用的系统模型选项卡,触发方法参数设置为比
。
编程使用
块参数:MinEffectiveParticleRatio |
类型:标量 |
价值观:范围[0,1] |
默认值:0.5 |
采样间隔
——固定重采样之间的时间间隔
1(默认)|正标量整数
固定的重采样的时间间隔,指定为一个积极的标量整数。采样间隔决定了在此期间执行重采样校正步骤。例如,两个意味着重新采样的值是每秒钟执行校正步骤。的值正
意味着永远不会执行重采样。
依赖关系
如果在这个参数是可用的系统模型选项卡,触发方法参数设置为时间间隔
。
编程使用
块参数:SamplingInterval |
类型:积极的标量整数 |
默认值:1 |
随机性
——是否可重复的随机数字
“重复”
(默认)|不可重复的
是否可重复的随机数,指定为“重复”
或不可重复的
。如果你想成为能够产生相同的结果不止一次随机性来“重复”
,并指定相同的随机数生成器的种子值种子。
编程使用
块参数:随机性 |
类型:特征向量 |
价值观:“重复” ,不可重复的 |
默认值:“重复” |
种子
——可重复的随机数种子值
0(默认)|标量
可重复的随机数种子值,指定为一个标量。
依赖关系
如果在这个参数是可用的系统模型选项卡,随机性参数设置为“重复”
。
编程使用
块参数:种子 |
类型:标量 |
默认值:0 |
数据类型
——块参数的数据类型
双
(默认)|单
使用这个参数来指定所有块参数的数据类型。
编程使用
块参数:数据类型 |
类型:特征向量 |
价值观:“单一” ,“双” |
默认值:“双” |
样品时间
——块样品的时间
1
(默认)|积极的标量
块样品时间,指定为一个积极的标量。
使用样品时间参数如果你的状态转换和测量似然函数有相同的样本。否则,选择使多重速率的操作选项多重速率的选项卡,指定样本乘以相同的选项卡。
依赖关系
如果在这个参数是可用的块输出,多重速率的选项卡,使多重速率的操作参数是从
。
编程使用
块参数:SampleTime |
类型:特征向量,字符串 |
默认值:' 1 ' |
块输出,多重速率的选项卡
输出状态估计方法
——用于提取粒子的状态估计方法
“的意思是”
(默认)|“MaxWeight”
|“没有”
用于提取粒子的状态估计方法,指定为以下之一:
“的意思是”
- - -粒子滤波块输出的加权平均粒子,根据参数权重和粒子状态估计。“Maxweight”
- - -粒子滤波块输出最高的粒子重量作为状态估计。“没有”
——使用这个选项来实现一个自定义的状态估计方法通过访问所有粒子使用输出所有粒子参数的块输出,多重速率的选项卡。
编程使用
块参数:StateEstimationMethod |
类型:特征向量,字符串 |
价值观:“的意思是” ,“MaxWeight” ,“没有” |
默认值:“的意思是” |
输出所有粒子
——输出所有粒子
“关闭”
(默认)|“上”
如果您选择这个参数,输出端口用于估计的粒子,粒子生成的块。
如果
StateOrientation
参数被指定为“列”
,然后输出作为一个粒子Ns——- - - - - -Np数组中。Ns系统的状态数,Np是粒子的数量。如果
StateOrientation
参数被指定为“行”
,然后输出作为一个粒子Np——- - - - - -Ns数组中。
编程使用
块参数:OutputParticles |
类型:特征向量 |
价值观:“关闭” ,“上” |
默认值:“关闭” |
输出权值
——输出粒子权重
“关闭”
(默认)|“上”
如果您选择这个参数,输出端口用于估计的粒子权重,权重生成的块。
如果
StateOrientation
参数被指定为“列”
,然后输出1,粒子权重Np向量。在这里,每个重量与粒子在同一列中粒子
数组中。Np是粒子的数量用于状态估计。如果
StateOrientation
参数被指定为“行”
,那么粒子权值作为输出Np1的向量。
编程使用
块参数:OutputWeights |
类型:特征向量 |
价值观:“关闭” ,“上” |
默认值:“关闭” |
输出状态估计误差协方差
——输出状态估计误差协方差
“关闭”
(默认)|“上”
如果您选择这个参数,状态估计误差协方差输出端口,P生成的块。
依赖关系
如果在这个参数是可用的块输出,多重速率的选项卡,状态估计方法参数设置为“的意思是”
。
编程使用
块参数:OutputStateCovariance |
类型:特征向量 |
价值观:“关闭” ,“上” |
默认值:“关闭” |
使用电流测量提高状态估计
——选择使用电流测量状态估计
“上”
(默认)|“关闭”
这个参数被选中时,块输出修正状态估计
在时间步k
直到时间估计,使用测量输出k
。如果你清楚这个参数,预测块返回状态估计
时间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。
扩展功能
C / c++代码生成
使用仿真软件生成C和c++代码®编码器™。金宝app
您所指定的状态转换和测量似然函数必须只使用MATLAB命令和支持代码生成的仿真软件模块。金宝app金宝app支持代码生成的块列表,看看金宝app金宝app仿真软件内置的支持代码生成的块金宝app(金宝app仿真软件编码器)。支持代码生成的命令列表,看看金宝app函数和对象支持C / c++代码生成金宝app(MATLAB编码器)。
版本历史
MATLAB명령
다음MATLAB명령에해당하는링크를클릭했습니다。
명령을실행하려면MATLAB명령창에입력하십시오。웹브라우저는MATLAB명령을지원하지않습니다。
你也可以从下面的列表中选择一个网站:
表现最好的网站怎么走吗
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。