基于粒子滤波的离散非线性系统状态估计
控制系统工具箱/状态估计
系统识别工具箱/评估器
的粒子过滤器块使用离散时间粒子滤波算法估计离散时间非线性系统的状态。
考虑有状态的植物x、输入u、输出米、过程噪声w,测量y.假设你可以将植物表示为一个非线性系统。
算法计算状态估计 使用你指定的状态转移和测量似然函数的非线性系统。
你为系统创建非线性状态转移函数和测量似然函数,并在块中指定这些函数。该块支持以不同采样率金宝app操作的多个传感器的系统状态估计。您可以指定多达5个测量似然函数,每个函数对应于系统中的一个传感器。
y1、y2、y3、y4,日元
-测量系统输出与块中指定的每个测量似然函数相对应的测量系统输出。端口数等于系统中的测量似然函数数。您最多可以指定五个测量似然函数。例如,如果系统有两个传感器,则在块中指定两个测量似然函数。第一个港口日元默认为可用。点击添加测量,生成端口y2对应于第二个测量似然函数。
指定端口为N-维向量,其中N为相应传感器测量的数量。例如,如果你的系统有一个传感器来测量物体的位置和速度,那么就只有一个端口日元. 这个port is specified as a two-dimensional vector with values corresponding to position and velocity.
第一个港口日元默认为可用。港口y2来日元是当你点击添加测量.
StateTransitionFcnInputs
-状态转换函数的可选输入参数状态转换函数的可选输入参数f
除了国家x
.
如果您创建f
使用MATLAB®函数(.米
文件),软件生成端口StateTransitionFcnInputs当您输入函数的名称时,并单击应用.
如果状态转移函数有多个额外的输入,请使用金宝app仿真软件的功能块指定函数。当你使用金宝app仿真软件的功能块,则直接向金宝app仿真软件的功能块使用轮廓尺寸块。的附加输入不生成输入端口粒子过滤器块。
满足以下两个条件时,才会生成该端口:
你指定f
在函数使用MATLAB函数,并f
是在MATLAB路径上。
f
除了粒子外,只需要一个额外的输入参数。
MeasurementLikelihoodFcn1Inputs,…,MeasurementLikelihoodFcn5Inputs
-每个测量可能性函数的可选输入参数测量似然函数的可选输入而不是状态x
和测量y
.
MeasurementLikelihoodFcn1Inputs对应于您指定的第一个度量可能性函数,等等。
如果使用MATLAB函数指定两个测量输入(.米
文件)函数时,软件生成端口MeasurementLikelihoodFcn1Inputs和MeasurementLikelihoodFcn2Inputs当你点击应用.您可以将这些端口的输入指定为标量、向量或矩阵。
如果测量似然函数有多个附加输入,请使用金宝app仿真软件的功能块来指定函数。当你使用金宝app仿真软件的功能块,则直接向金宝app仿真软件的功能块使用轮廓尺寸块。的附加输入不生成输入端口粒子过滤器块。
一个与测量似然函数相对应的端口h
只有满足以下两个条件时才生成:
你指定测量输入h
在函数使用MATLAB函数,并h
是在MATLAB路径上。
h
除了粒子和测量,只需要一个额外的输入参数。
Enable1、Enable2 Enable3、Enable4 Enable5
—当有测量数据时,允许对估计状态进行校正当测量数据可用时,可对估计状态进行校正。
例如,考虑测得的输出数据在端口的所有时间点都不可用。日元这对应于第一个测量似然函数。然后,使用一个信号值0
在Enable1当测量数据可用时,允许修正估计状态的端口。指定端口值为0
当测量数据不可用时。类似地,如果在端口的所有时间点上测量的输出数据都不可用y我
对于我th测量似然函数,指定相应的端口启用我
作为一种价值0
.
如果您选择添加启用端口对于测量似然函数,生成与该测量似然函数相对应的端口。单击时将显示端口应用.
xhat
——估计状态估计状态,返回为大小向量Ns,在那里Ns是系统的状态数。要访问各个状态,请使用选择器块。
当使用当前度量来改进状态估计参数,则块输出校正的状态估计
在时间步k
,使用测量输出直到时间k
.如果清除此参数,该块将返回预测的状态估计
暂时k
,使用前一时间的测量输出进行估计k - 1
.如果你的过滤器在一个反馈循环中,并且在你的Simulink中有一个代数循环,那么清除这个参数金宝app®模型。
P
-状态估计误差协方差状态估计误差协方差,返回为Ns-借-Ns矩阵,在哪里Ns是系统的状态数。要访问单个协方差,请使用选择器块。
只有当您选择时,才能输出误差协方差输出状态估计误差协方差在块输出,多重速率的选项卡,并单击应用.
中,该参数可用块输出,多重速率的选项卡,状态估计方法参数设置为“中庸”
.
粒子
-用于状态估计的粒子值用于状态估计的粒子值,返回为Ns-借-Np或Np-借-Ns数组中。Ns是系统的状态数,和Np为粒子数。
如果StateOrientation
参数指定为“列”
,然后粒子作为Ns-借-Np数组中。
如果StateOrientation
参数指定为“行”
,然后粒子作为Np-借-Ns数组中。
如果选择,则生成该端口输出所有粒子在块输出,多重速率的选项卡,并单击应用.
权重
—用于状态估计的粒子权重用于状态估计的粒子权重,返回为1-by-Np或Np1的向量,Np是用于状态估计的粒子数。
如果StateOrientation
参数指定为“列”
,然后权重返回为1-by-Np向量,其中每个权重与中同一列中的粒子关联粒子
数组中。
如果StateOrientation
参数指定为“行”
,然后权重作为Np-by-1向量,其中每个权重与在同一行中的粒子相关联粒子
数组中。
如果选择,则生成该端口输出权值在块输出,多重速率的选项卡,并单击应用.
函数
—状态转移函数名称“vdpParticleFilterStateFcn”
(默认)|函数名粒子滤波状态转移函数在时间步长计算粒子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-借-Np或Np-借-Ns数组中。Ns是系统的状态数,和Np为粒子数。
如果StateOrientation
参数指定为“列”
,然后粒子是一个Ns-借-Np数组中。
如果StateOrientation
参数指定为“行”
,然后粒子是一个Np-借-Ns数组中。
中,该参数可用系统模型选项卡,分布参数设置为风俗
.
块参数:InitialParticles |
类型:大堆 |
默认值:[] |
权重
-自定义粒子权重值的状态估计自定义粒子权重值的状态估计,指定为1 by-Np或Np-乘1的正向量Np是用于状态估计的粒子数。
如果StateOrientation
参数指定为“列”
,然后权重是1 -Np向量。向量中的每个权重都与在同一列中的粒子相关联粒子
数组中。
如果StateOrientation
参数指定为“行”
,然后权重是一个Np-by-1向量。向量中的每个权重都与中同一行中的粒子相关联粒子
数组中。
中,该参数可用系统模型选项卡,分布参数设置为风俗
.
块参数:InitialWeights |
类型:积极的向量 |
默认值:[] |
函数
-度量似然函数名“vdpMeasurementLikelihoodFcn”
(默认)|函数名测量似然函数使用传感器测量来计算粒子的似然(状态假设)。对于每个状态假设(粒子),函数首先计算一个纳米-元素测量假设向量。然后根据传感器测量结果和测量噪声的概率分布,计算各测量假设的可能性。这个函数的语法如下:
可能性= h(粒子,测量,param1, param2,…)
“列”
,或Np-借-Ns如果国家导向被指定为“行”
.测量是一个纳米元向量,纳米是传感器提供的测量次数。param_i表示您可以指定的可选输入参数。有关可选输入参数的详细信息,请参阅MeasurementLikelihoodFcn1Inputs,…,MeasurementLikelihoodFcn5Inputs.
中创建度量可能性函数并指定函数名称函数。例如,如果vdpMeasurementLikelihoodFcn.m
您创建并保存的度量可能性函数是否指定函数作为“vdpMeasurementLikelihoodFcn”
.
您可以创建函数使用一个金宝app仿真软件的功能块或作为MATLAB函数(.米
文件)。
如果系统中有多个传感器,则可以指定多个测量似然函数。使用添加测量按钮。若要去除测量似然函数,请使用删除测量.
块参数:测量似然系数fcn1 ,测量似然系数fcn2 ,测量可能性FCN3 ,测量似然系数Fcn4 ,测量可能性FCN5 |
类型:特征向量,字符串 |
默认值:“vdpMeasurementLikelihoodFcn” |
添加启用端口
—只有在有实测数据的情况下,才能对估计状态进行校正从
(默认)|在
假设测量的输出数据在港口的所有时间点都不可用日元这对应于第一个测量似然函数。生成输入端口Enable1中,选择添加启用端口. 仅当测量数据可用时,使用此端口的信号来启用估计状态的校正。类似地,如果在端口的所有时间点上测量的输出数据都不可用y我
对于我th测量似然函数,选择相应的添加启用端口.
块参数:HasMeasurementEnablePort1 ,HasMeasurementEnablePort2 ,HasMeasurementEnablePort3 ,HasMeasurementEnablePort4 ,HasMeasurementEnablePort5 |
类型:特征向量 |
价值观:“关” ,“上” |
默认值:“关” |
重采样法
-用于粒子重采样的方法多项式的
(默认)|“系统性”
|“分层”
用于粒子重采样的方法,具体如下:
多项式的
“系统”
“分层”
块参数:ResamplingMethod |
类型:特征向量 |
价值观:多项式的 ,“系统性” ,“分层” |
默认值:多项式的 |
触发方法
-方法来确定何时进行重采样“比”
(默认)|“间隔”
方法确定何时发生重采样,指定为“比”
或“间隔”
. 这个“比”
值触发基于有效总粒子比例的重采样。的“间隔”
值触发粒子滤波操作的规则时间步重采样。
块参数:TriggerMethod |
类型:特征向量 |
价值观:“比” ,“间隔” |
默认值:“比” |
最小有效颗粒比
-有效粒子数与总粒子数的最小期望比率有效粒子数与总粒子数的最小期望比率,指定为正标量。粒子的有效数量是当前粒子集合近似后验分布的程度的度量。较低的有效粒子比意味着参与估计和重采样的粒子数较低。
当有效粒子数与总粒子数之比低于最小有效粒子数比时,触发重采样步骤。
指定最小有效粒子比为从0到1的任意值。
中,该参数可用系统模型选项卡,触发方法参数设置为比
.
块参数:MinEffectiveParticleRatio |
类型:标量 |
价值观:范围[0, 1] |
默认值:0.5 |
采样间隔
—固定重采样间隔固定的重采样间隔,指定为正标量整数。采样间隔确定执行重采样的校正步骤。例如,值为2意味着每秒钟执行一次重采样校正步骤。价值inf
意味着永远不会执行重采样。
中,该参数可用系统模型选项卡,触发方法参数设置为时间间隔
.
块参数:SamplingInterval |
类型:积极的标量整数 |
默认值:1 |
随机性
—随机数是否可重复“重复”
(默认)|不可重复的
随机数是否可重复,指定为任意一个“重复”
或不可重复的
.如果您希望能够多次生成相同的结果,请设置随机性来“重复”
,并指定相同的随机数生成器种子值种子.
块参数:随机性 |
类型:特征向量 |
价值观:“重复” ,不可重复的 |
默认值:“重复” |
种子
-可重复随机数的种子值可重复随机数的种子值,指定为标量。
中,该参数可用系统模型选项卡,随机性参数设置为“重复”
.
块参数:种子 |
类型:标量 |
默认值:0 |
数据类型
-块参数的数据类型双
(默认)|单
使用此参数指定所有块参数的数据类型。
块参数:数据类型 |
类型:特征向量 |
价值观:“单一” ,“双” |
默认值:“双” |
样品时间
-块采样时间1
(默认值)|正标量块采样时间,指定为正标量。
使用样品时间参数,如果状态转移和所有测量可能性函数具有相同的采样时间。否则,选择使多重速率的操作选项多重速率的选项卡,并在同一选项卡中指定示例时间。
中,该参数可用块输出,多重速率的选项卡,使多重速率的操作参数是从
.
块参数:SampleTime |
类型:特征向量,字符串 |
默认值:' 1 ' |
状态估计方法
-用于从粒子中提取状态估计的方法“中庸”
(默认)|“MaxWeight”
|“没有”
用于从粒子中提取状态估计的方法,指定为以下其中之一:
“中庸”
- - -粒子过滤器Block根据参数输出粒子的加权平均值权重和粒子,就像州政府估计的那样。
“最大重量”
- - -粒子过滤器块输出权重最大的粒子作为状态估计。
“没有”
-使用此选项来实现自定义的状态估计方法,通过访问所有粒子使用输出所有粒子来自块输出,多重速率的选项卡。
块参数:StateEstimationMethod |
类型:特征向量,字符串 |
价值观:“中庸” ,“MaxWeight” ,“没有” |
默认值:“中庸” |
输出所有粒子
-输出所有粒子“关”
(默认)|“上”
如果你选择这个参数,一个用于估计的粒子的输出端口,粒子在块中生成。
如果StateOrientation
参数指定为“列”
,则粒子输出为Ns-借-Np数组中。Ns是系统的状态数,和Np为粒子数。
如果StateOrientation
参数指定为“行”
,则粒子输出为Np-借-Ns数组中。
块参数:OutputParticles |
类型:特征向量 |
价值观:“关” ,“上” |
默认值:“关” |
输出权值
-输出颗粒权重“关”
(默认)|“上”
如果选择此参数,则为估计中使用的粒子权重提供一个输出端口,权重在块中生成。
如果StateOrientation
参数指定为“列”
,则粒子权重以1-by-的形式输出Np向量。这里,每个权重与粒子
数组中。Np是用于状态估计的粒子数。
如果StateOrientation
参数指定为“行”
,然后将粒子权重输出为Np1的向量。
块参数:OutputWeights |
类型:特征向量 |
价值观:“关” ,“上” |
默认值:“关” |
输出状态估计误差协方差
-输出状态估计误差协方差“关”
(默认)|“上”
如果选择此参数,则状态估计误差协方差输出端口,P在块中生成。
中,该参数可用块输出,多重速率的选项卡,状态估计方法参数设置为“中庸”
.
块参数:OutputStateCovariance |
类型:特征向量 |
价值观:“关” ,“上” |
默认值:“关” |
使用当前度量来改进状态估计
-选择使用当前测量状态估计“上”
(默认)|“关”
当选择此参数时,块输出修正后的状态估计
在时间步k
,使用测量输出直到时间k
.如果清除此参数,该块将返回预测的状态估计
暂时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.
中,该参数可用块输出,多重速率的选项卡,使多重速率的操作参数是在
.
块参数:StateTransitionFcnSampleTime ,MeasurementLikelihoodFcn1SampleTime1 ,MeasurementLikelihoodFcn1SampleTime2 ,MeasurementLikelihoodFcn1SampleTime3 ,MeasurementLikelihoodFcn1SampleTime4 ,MeasurementLikelihoodFcn1SampleTime5 |
类型:特征向量,字符串 |
默认值:' 1 ' |
您指定的状态转换和度量可能性函数必须仅使用支持代码生成的MATLAB命令和Simulink块。金宝app金宝app有关支持代码生成的块列表,请参见金宝app金宝app支持代码生成的Simulink内置块金宝app(金宝app仿真软件编码器)。有关支持代码生成的命令列表,请参见金宝appC/ c++代码生成支持的函数和对象金宝app(MATLAB编码器)。
你点击一个链接对应于这个MATLAB命令:
通过在MATLAB命令窗口中输入命令来运行命令。Web浏览器不支持MATLAB命令。金宝app
你也可以从以下列表中选择一个网站:
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。