使用粒子滤波器的离散时间非线性系统估算状态
控制系统工具箱/状态估计
系统识别工具箱/估计
的粒子过滤器块估计使用离散时间粒子滤波器算法的离散时间非线性系统的状态。
考虑一个州的植物x, 输入u, 输出米,过程噪声w和测量y.假设您可以将工厂代表为非线性系统。
该算法计算状态估计值 使用状态转换和测量似曲功能的非线性系统您指定。
您可以为系统创建非线性状态转换功能和测量似然函数,并在块中指定这些函数。该块支持具有以不同采金宝app样率运行的多个传感器的系统的状态估计。您可以指定多达五个测量似然函数,每个测量似然函数对应于系统中的传感器。
y1、y2、y3、y4,日元
-测量系统输出测量系统输出对应于您在块中指定的每个测量似然函数。端口数量等于系统中的测量似然函数的数量。您可以指定最多五种测量似函数。例如,如果您的系统有两个传感器,则在块中指定两个测量似然函数。第一个港口y1.默认情况下可用。点击添加测量,生成端口Y2.对应于第二测量似然函数。
将端口指定为N- 尺寸的向量,在哪里N是对应传感器测量的数量。例如,如果你的系统有一个传感器来测量一个物体的位置和速度,那么就只有一个端口y1..端口被指定为二维向量,其中值对应于位置和速度。
第一个港口y1.默认情况下可用。港口Y2.至y5.是在单击时生成的添加测量.
StateTransitionFcninputs.
-状态转换函数的可选输入参数状态转换函数的可选输入参数f
除了国家x
.
如果您创建f
使用matlab.®功能 (.米
文件),软件生成端口StateTransitionFcninputs.输入功能名称时,然后单击应用.
如果状态转换函数有多个额外输入,请使用金宝app仿真软件的功能(金宝app模型)块指定函数。当你使用的时候金宝app仿真软件的功能块,则直接向金宝app仿真软件的功能块使用inport.(金宝app模型)块。没有为附加输入生成输入端口粒子过滤器块。
仅当满足以下两个条件时才生成此端口:
你指定了f
在功能使用MATLAB功能,和f
在MATLAB路径上。
f
除了粒子之外只需要一个额外的输入参数。
MeasurementLikelihoodFCN1Inputs,...,MeasurementLikelioieFCN5.Inputs
- 每个测量似然函数的可选输入参数除状态以外的测量似然函数的可选输入x
和测量y
.
MeasurementLikelihoodFCN1Inputs.对应于您指定的第一个测量似然函数,以此类推。
如果使用MATLAB函数指定两个测量输入(.米
文件)在功能,软件生成端口MeasurementLikelihoodFCN1Inputs.和MeasurementLikelihoodFCN2Inputs.当你点击应用.您可以将这些端口的输入指定为标量,向量或矩阵。
如果您的测量似然函数具有多个额外输入,请使用金宝app仿真软件的功能(金宝app模型)块指定函数。当你使用的时候金宝app仿真软件的功能块,则直接向金宝app仿真软件的功能块使用inport.(金宝app模型)块。没有为附加输入生成输入端口粒子过滤器块。
对应于测量似然函数的端口h
仅在满足以下两个条件时才生成:
你指定测量输入h
在功能使用MATLAB功能,和h
在MATLAB路径上。
h
除了粒子和测量外,只需要一个额外的输入参数。
Enable1,Enable2,Enable3,Enable4,Enable5
- 当测量数据可用时,可以实现估计状态的校正在测量数据可用时,可以实现估计状态的校正。
例如,考虑在端口处的所有时间点都不提供测量的输出数据y1.这对应于第一测量似然函数。然后,使用以外的信号值0
当启用1.当测量数据可用时,以启用估计状态的端口。指定端口值为0
测量数据时不可用。同样,如果在端口的所有时间点都不提供测量的输出数据y我
为了我TH.测量似然函数,指定相应的端口使能够我
作为以外的价值0
.
如果你选择添加启用端口对于测量似然函数,生成对应于该测量似然函数的端口。单击时,端口会出现应用.
XHAT.
- 估计的国家估计的状态,作为大小的矢量返回ns., 在哪里ns.是系统的状态数量。要访问个人状态,请使用选择器(金宝app模型)块。
当。。。的时候使用当前度量来改进状态估计参数被选中,块输出纠正的状态估计值
在时间步骤k
,估计使用测量的输出直到时间k
.如果清除此参数,则块返回预测的状态估计
时间k
,估计使用测量的输出直到上一次K-1
.如果筛选器处于反馈循环中,请清除此参数,并且在Simulink中有一个代数循环金宝app®模型。
P
-状态估计误差协方差状态估计错误协方差,作为一个返回ns.-经过-ns.矩阵,其中ns.是系统的状态数量。要访问个人的协方差,请使用选择器(金宝app模型)块。
只有当您选择时,才可以输出误差协方差输出状态估计错误协方差在里面块输出,多速率选项卡,然后单击应用.
如果在中,此参数可用块输出,多速率标签,这国家估计方法参数设置为'吝啬的'
.
粒子
- 用于状态估计的粒子值用于状态估计的粒子值,作为返回ns.-经过-NP.或者NP.-经过-ns.大批。ns.是系统的状态数量,以及NP.是粒子的数量。
如果是StateOrientation
参数被指定为'柱子'
,然后粒子被归还为一个ns.-经过-NP.大批。
如果是StateOrientation
参数被指定为“行”
,然后粒子被归还为一个NP.-经过-ns.大批。
如果您选择,则会生成此端口输出所有粒子在里面块输出,多速率选项卡,然后单击应用.
权重
- 用于状态估计的粒子重量用于状态估计的粒子权重,以1-返回NP.或者NP.-1 vector,在哪里NP.是用于状态估计的粒子的数量。
如果是StateOrientation
参数被指定为'柱子'
,然后权重作为一个1-by-返回NP.向量,每种重量与同一列中的粒子相关联粒子
大批。
如果是StateOrientation
参数被指定为“行”
,然后权重返回为NP.-1载向量,每个重量与同一行中的粒子相关联粒子
大批。
如果您选择,则会生成此端口输出权重在里面块输出,多速率选项卡,然后单击应用.
功能
- 状态转换函数名称'vdpparticlefilterstatefcn'
(默认)|函数名称粒子过滤器状态转换功能在时间步骤计算粒子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 |
分配
-粒子初始分布'高斯'
(默认)|'制服'
|'风俗'
粒子的初始分布,指定为'高斯'
,'制服'
, 或者'风俗'
.
如果你选择'高斯'
,初始一组粒子或状态假设按多功能高斯分布分发,您可以在其中指定吝啬的和协方差.假设所有粒子的初始重量相等。
如果你选择'制服'
,初始粒子集每种均匀分布分布,在那里您指定鞋面和下部国家界限.假设所有粒子的初始重量相等。
'风俗'
允许您指定自己的一组初始粒子及其重量。您可以使用任意概率分布粒子和权重初始化过滤器。
块参数:初始分布 |
类型:字符向量 |
价值观:'高斯' ,'制服' ,'风俗' |
默认值:'高斯' |
吝啬的
- 粒子的初始平均值粒子的初始平均值,指定为一个矢量。被估计的状态数定义了向量的长度。
如果在中,此参数可用系统模型标签,这分配参数设置为高斯
.
块参数:initialmean. |
类型:大批 |
默认值:[0,0] |
协方差
- 粒子的初始协方差颗粒的初始协方差,指定为标量,矢量或矩阵。
如果协方差被指定为:
标量,那么它必须是积极的。假设协方差是一个[ns.ns.]矩阵与该标量在对角线上。这里,ns.是州的数量。
矢量,然后每个元素必须是正的。假设协方差是一个[ns.ns.矩阵与向量的元素对角线。
矩阵,那么它必须是正半纤维。
如果在中,此参数可用系统模型标签,这分配参数设置为高斯
.
块参数:InitialCovariance |
类型:标量,矢量或矩阵 |
默认值:1 |
圆形变量
- 用于状态估计的圆形变量用于状态估计的圆形变量,指定为标量或ns.-element矢量,在哪里ns.是州的数量。
如果圆形变量被指定为标量,软件将其扩展到每个元素等于该标量的向量。圆形(或角度)分布使用概率密度函数,其中一系列[-π.
π
]。如果系统中的某些状态表示具有对象的方向的角数量,请使用圆形变量。
块参数:循环varialbles. |
类型:标量,矢量 |
默认值:0 |
国家方向
-输入系统状态的方向'柱子'
(默认)|“行”
系统状态的方向,指定为'柱子'
或者“行”
.
如果国家方向被指定为:
'柱子'
,然后对状态转换和测量似然函数的第一个输入参数是[ns.NP.]。在这种情况下,我TH.这个矩阵的列是我TH.粒子(状态假设)。同时,各州也进行了估计XHAT.输出为[ns.1]矢量。这里,ns.是国家的数量,和NP.是粒子的数量。
“行”
,然后对状态转换和测量似然函数的第一个输入参数是[NP.ns.[该矩阵的每一行包含粒子。同时,各州也进行了估计XHAT.输出为[1ns.矢量。
块参数:StateOrientation |
类型:字符向量 |
价值观:'柱子' ,“行” |
默认值:'柱子' |
国家界限
- 系统状态的初始界限系统状态的初始界限,指定为一个ns.-by-2阵列,在哪里ns.是州的数量。
的我TH.行列出了均匀分布的下界和上界的粒子的初始分布我TH.状态。
如果在中,此参数可用系统模型标签,这分配参数设置为制服
.
块参数:InitialStateBounds. |
类型:大批 |
默认值:[-3 3; -3 3] |
粒子
- 状态估计的自定义粒子分布状态估计的自定义粒子分布,指定为ns.-经过-NP.或者NP.-经过-ns.大批。ns.是系统的状态数量,以及NP.是粒子的数量。
如果是StateOrientation
参数被指定为'柱子'
,然后粒子是一个ns.-经过-NP.大批。
如果是StateOrientation
参数被指定为“行”
,然后粒子是一个NP.-经过-ns.大批。
如果在中,此参数可用系统模型标签,这分配参数设置为风俗
.
块参数:InitialParticles |
类型:大批 |
默认值:[] |
权重
- 状态估计的自定义粒度重量值状态估计的自定义粒子权重值,指定为1-by-NP.或者NP.- 1个阳性矢量,在哪里NP.是用于状态估计的粒子的数量。
如果是StateOrientation
参数被指定为'柱子'
,然后权重是1 -NP.向量。向量中的每种重量与同一列中的颗粒相关联粒子
大批。
如果是StateOrientation
参数被指定为“行”
,然后权重是A.NP.1的向量。向量中的每种重量与同一行中的粒子相关联粒子
大批。
如果在中,此参数可用系统模型标签,这分配参数设置为风俗
.
块参数:初始重量 |
类型:阳性矢量 |
默认值:[] |
功能
- 测量似然函数名称“vdpMeasurementLikelihoodFcn”
(默认)|函数名称测量似然函数使用传感器测量来计算粒子(状态假设)的可能性。对于每个状态假设(粒子),该功能首先计算纳米-element测量假设矢量。然后基于传感器测量和测量噪声概率分布来计算每个测量假设的可能性。此函数具有语法:
似然= h(粒子,测量,param1,param2,......)
'柱子'
, 或者NP.-经过-ns.如果国家方向被指定为“行”
.测量是一个纳米-element矢量在哪里,纳米是您传感器提供的测量次数。PARAM_I.表示您可以指定的可选输入参数。有关可选输入参数的更多信息,请参阅MeasurementLikelihoodFCN1Inputs,...,MeasurementLikelioieFCN5.Inputs.
您创建测量似然函数并指定功能名称功能.例如,如果vdpmeasurementlikelihoodfcn.m.
是否指定您创建并保存的测量似然函数功能作为“vdpMeasurementLikelihoodFcn”
.
你可以创建功能使用一个金宝app仿真软件的功能(金宝app模型)块或作为MATLAB功能(.米
文件)。
如果系统中有多个传感器,则可以指定多个测量似然函数。您可以使用最多5个测量似然函数添加测量按钮。删除测量似然功能,使用删除测量.
块参数:MeasurementLikelihoodFCN1. ,MeasurementLikelihoodFCN2. ,MeasurementLikelihoodFCN3. ,MeasurementLikelihoodFCN4. ,MeasurementLikelihoodFCN5. |
类型:特征向量,字符串 |
默认值:“vdpMeasurementLikelihoodFcn” |
添加启用端口
- 仅在测量数据可用时才能校正估计状态离开
(默认)|上
假设在端口的所有时间点都不提供测量的输出数据y1.这对应于第一测量似然函数。生成输入端口启用1., 选择添加启用端口.在此端口处使用信号,仅在测量数据可用时才能够校正估计的状态。同样,如果在端口的所有时间点都不提供测量的输出数据y我
为了我TH.测量似然函数,选择相应的添加启用端口.
块参数:HasmeasurementenablePort1. ,HasmeasurementenablePort2. ,HasmeasurementenablePort3. ,HasmeasurementenablePort4. ,HasmeasurementenablePort5. |
类型:字符向量 |
价值观:'离开' ,“上” |
默认值:'离开' |
重采样方法
- 用于粒子重采样的方法'多行'
(默认)|“系统性”
|'分层'
用于粒子重采样的方法,指定为以下之一:
'多行'
'systematic'
'分层'
块参数:ResamplingMethod |
类型:字符向量 |
价值观:'多行' ,“系统性” ,'分层' |
默认值:'多行' |
触发方法
- 确定重新采样何时发生重采样的方法“比”
(默认)|'间隔'
确定重新采样何时发生重新采样的方法,指定为“比”
或者'间隔'
.的“比”
基于有效总粒子的比率触发重采样。的'间隔'
Value在粒子滤波操作的定时步长触发重新采样。
块参数:triggermethod. |
类型:字符向量 |
价值观:“比” ,'间隔' |
默认值:“比” |
最小有效粒度
- 有效数量的颗粒与粒子总数的最小所需比率有效粒子数与粒子总数的最小期望比率,指定为一个正标量。粒子的有效数量是对当前粒子集合如何很好地逼近后验分布的一种度量。较低的有效粒子比意味着较低的粒子数量对估计和重采样是必需的。
如果有效数量的颗粒与颗粒总数的比率低于最小有效粒度,则触发重采样步骤。
将最小有效粒径指定为0到0的任何值。
如果在中,此参数可用系统模型标签,这触发方法参数设置为比率
.
块参数:mineffectiveparticleratio |
类型:标量子 |
价值观:范围[0,1] |
默认值:0.5 |
抽样间隔
- 重新采样之间的固定间隔重新采样之间的固定间隔,指定为正标量整数。采样间隔确定在哪些校正步骤中执行重采样。例如,每秒执行重采样的两个意味着重试步骤。价值INF.
意味着从未执行重新采样。
如果在中,此参数可用系统模型标签,这触发方法参数设置为间隔
.
块参数:SamplingInterval. |
类型:积极的标量整数 |
默认值:1 |
随机性
—随机数是否可重复“重复”
(默认)|'不可重复'
随机数是否可重复,指定为“重复”
或者'不可重复'
.如果您希望能够多次生成相同的结果,请设置随机性至“重复”
,并指定相同的随机数发生器种子值种子.
块参数:随机性 |
类型:字符向量 |
价值观:“重复” ,'不可重复' |
默认值:“重复” |
种子
- 可重复随机数的种子值可重复随机数的种子值,指定为标量。
如果在中,此参数可用系统模型标签,这随机性参数设置为“重复”
.
块参数:种子 |
类型:标量子 |
默认值:0 |
数据类型
- 块参数的数据类型双倍的
(默认)|单身的
使用此参数为所有块参数指定数据类型。
块参数:数据类型 |
类型:字符向量 |
价值观:'单身的' ,'双倍的' |
默认值:'双倍的' |
采样时间
- 块采样时间1
(默认)|积极的标量块采样时间,指定为正标量。
使用采样时间参数,如果您的状态转移和所有测量似然函数有相同的样本时间。否则,选择启用多速率操作选项在多型选项卡,并在同一标签中指定采样时间。
如果在中,此参数可用块输出,多速率标签,这启用多速率操作参数是离开
.
块参数:采样时间 |
类型:特征向量,字符串 |
默认值:' 1 ' |
国家估计方法
- 用于从粒子中提取状态估计的方法'吝啬的'
(默认)|'maxweight'
|'没有任何'
用于从粒子中提取状态估计的方法,指定为以下之一:
'吝啬的'
- 这粒子过滤器块根据参数输出粒子的加权平均值权重和粒子,作为国家估计。
'maxweight'
- 这粒子过滤器块输出具有最高权重的粒子作为状态估计。
'没有任何'
- 使用此选项来实现自定义状态估计方法,通过使用使用所有粒子来访问所有粒子输出所有粒子参数来自块输出,多速率标签。
块参数:最终于司法方法 |
类型:特征向量,字符串 |
价值观:'吝啬的' ,'maxweight' ,'没有任何' |
默认值:'吝啬的' |
输出所有粒子
-输出所有粒子'离开'
(默认)|“上”
如果您选择此参数,用于估计的粒子的输出端口,粒子在块中生成。
如果是StateOrientation
参数被指定为'柱子'
,则粒子输出为ns.-经过-NP.大批。ns.是系统的状态数量,以及NP.是粒子的数量。
如果是StateOrientation
参数被指定为“行”
,则粒子输出为NP.-经过-ns.大批。
块参数:输出序列 |
类型:字符向量 |
价值观:'离开' ,“上” |
默认值:'离开' |
输出权重
- 输出粒子重量'离开'
(默认)|“上”
如果选择此参数,则估计中使用的粒度重量的输出端口,权重在块中生成。
如果是StateOrientation
参数被指定为'柱子'
,然后将粒度重量作为1-by-输出NP.向量。这里,每种重量与同一列中的粒子相关联粒子
大批。NP.是用于状态估计的粒子的数量。
如果是StateOrientation
参数被指定为“行”
,然后将粒子重量作为a输出NP.1的向量。
块参数:输出重量 |
类型:字符向量 |
价值观:'离开' ,“上” |
默认值:'离开' |
输出状态估计错误协方差
- 输出状态估计误差协方差'离开'
(默认)|“上”
如果选择此参数,则状态估计错误协方差输出端口,P在块中生成。
如果在中,此参数可用块输出,多速率标签,这国家估计方法参数设置为'吝啬的'
.
块参数:outputStatecovariance. |
类型:字符向量 |
价值观:'离开' ,“上” |
默认值:'离开' |
使用当前度量来改进状态估计
-选择使用当前的测量状态估计“上”
(默认)|'离开'
选择此参数时,块会输出纠正的状态估计值
在时间步骤k
,估计使用测量的输出直到时间k
.如果清除此参数,则块返回预测的状态估计
时间k
,估计使用测量的输出直到上一次K-1
.如果您的过滤器处于一个反馈循环中,并且在您的Simulink模型中有一个代数循环,则清除此参数。金宝app
块参数:USECURRENTESTIMATOR. |
类型:字符向量 |
价值观:“上” ,'离开' |
默认值:“上” |
启用多速率操作
- 为状态转换和测量似然函数启用不同样本时间的规范'离开'
(默认)|“上”
如果状态转换的采样时间或任何测量似曲函数与其余不同的采样时间,则选择此参数。您指定了样本时间多型标签,in.采样时间.
块参数:eNableMuktirate. |
类型:字符向量 |
价值观:'离开' ,“上” |
默认值:'离开' |
样品时间
- 状态转换和测量似然函数采样时间如果状态转换和测量似然函数的采样时间是不同的,请指定采样时间.指定测量功能的采样时间,作为状态转换采样时间的正整数倍数。您指定的示例时间对应于以下输入端口:
对应于状态转换函数的端口 - 状态转换功能的附加输入StateTransitionFcninputs..这些端口的样本时间必须始终等于状态转移函数的样本时间,但可以不同于测量似然函数的样本时间。
相对应的端口我TH.测量似然函数 - 测量输出y我
,额外输入到测量似然函数MeasurementLikelihoodfcn.我
输入,在端口启用信号使能够我
.对于相同测量似然函数的这些端口的采样时间必须始终相同,但可以与状态转换功能的采样时间和其他测量似然函数不同。
如果在中,此参数可用块输出,多速率标签,这启用多速率操作参数是上
.
块参数:StateTransitionFcnsampletime. ,MeasurementLikelihoodFcn1SampleTime1 ,MeasurementLikelihoodFcn1SampleTime2 ,MeasurementLikelihoodFcn1SampleTime3 ,MeasurementLikelihoodFcn1SampleTime4 ,MeasurementLikelihoodFcn1SampleTime5 |
类型:特征向量,字符串 |
默认值:' 1 ' |
您指定的状态转换和测量可能性函数必须只使用MATLAB命令和支持代码生成的Simulink块。金宝app金宝app有关支持代码生成的块列表,请参见金宝app金宝appSimulink内置块,支持代码生成金宝app(金宝appSimulink编码器).有关支持代码生成的命令列表,请参见金宝appC / C ++代码生成支持的函数和对象金宝app(MATLAB编码器).
您单击了与此MATLAB命令对应的链接:
在MATLAB命令窗口中输入它来运行命令。Web浏览器不支持MATLAB命令。金宝app
您还可以从以下列表中选择一个网站:
请选择表现最佳的中国网站(中文或英文)。MathWorks的其他国家网站并没有针对您所在位置的访问进行优化。