利用粒子滤波估计离散非线性系统的状态
控制系统工具箱/状态估计
系统识别工具箱/估计器
的粒子滤波采用离散粒子滤波算法对离散非线性系统的状态进行块估计。
考虑一个有状态的工厂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
.如果过滤器处于反馈循环中,并且Simulink中存在代数循环,则清除此参数金宝app®模型。
P
-状态估计误差协方差状态估计误差协方差,返回为Ns——- - - - - -Ns矩阵,Ns是系统的状态数。要访问个别协方差,请使用选择器(金宝app模型)块。
只有当您选择时,才可以输出误差协方差输出状态估计误差协方差在块输出,多速率选项卡,单击应用.
时,此参数有效块输出,多速率选项卡,状态估计法参数设置为“的意思是”
.
粒子
-用于状态估计的粒子值用于状态估计的粒子值,返回为Ns——- - - - - -Np或Np——- - - - - -Ns数组中。Ns系统的状态数,和Np是粒子数。
如果StateOrientation
参数被指定为“列”
,然后粒子返回为Ns——- - - - - -Np数组中。
如果StateOrientation
参数被指定为“行”
,然后粒子返回为Np——- - - - - -Ns数组中。
如果选择,则生成该端口输出所有粒子在块输出,多速率选项卡,单击应用.
权重
-用于状态估计的粒子权重用于状态估计的粒子权重,返回为1 × -Np或Np-by-1向量,其中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仿真软件的功能(金宝app模型)块或作为MATLAB函数(.米
文件)。
块参数:StateTransitionFcn |
类型:字符向量,字符串 |
默认值:“vdpParticleFilterStateFcn” |
粒子数
-过滤器中使用的颗粒数量过滤器中使用的粒子数,指定为正标量整数。每个粒子代表系统中的一个状态假设。更高数量的粒子增加了状态估计精度,但也增加了运行滤波器所需的计算工作量。
块参数:NumberOfParticles |
类型:正标量整数 |
默认值:1000 |
分布
-粒子的初始分布“高斯”
(默认)|“统一”
|“自定义”
粒子的初始分布,指定为“高斯”
,“统一”
,或“自定义”
.
如果你愿意“高斯”
,初始粒子集或状态假设按多元高斯分布分布,其中指定的意思是而且协方差.假定所有粒子的初始重量相等。
如果你愿意“统一”
,初始粒子集按均匀分布分布,其中指定上、下国家边界.假定所有粒子的初始重量相等。
“自定义”
允许您指定自己的初始粒子集及其权重。你可以使用任意的概率分布粒子而且权重初始化筛选器。
块参数:InitialDistribution |
类型:特征向量 |
价值观:“高斯” ,“统一” ,“自定义” |
默认值:“高斯” |
的意思是
-粒子的初始均值粒子的初始平均值,以矢量表示。要估计的状态数定义了向量的长度。
时,此参数有效系统模型选项卡,分布参数设置为高斯
.
块参数:InitialMean |
类型:数组 |
默认值:(0,0) |
协方差
-粒子的初始协方差粒子的初始协方差,用标量、向量或矩阵表示。
如果协方差被指定为:
一个标量,那么它一定是正的。协方差假设为a [NsNs]矩阵与这个标量对角线。在这里,Ns是状态数。
一个向量,那么每个元素都必须是正的。协方差假设为a [NsNs矩阵的元素在对角线上。
一个矩阵,那么它一定是正的半定的。
时,此参数有效系统模型选项卡,分布参数设置为高斯
.
块参数:InitialCovariance |
类型:标量、向量或矩阵 |
默认值:1 |
循环变量
-用于状态估计的循环变量用于状态估计的循环变量,指定为标量或Ns-element vector,其中Ns是状态数。
如果循环变量指定为标量时,软件将其扩展为每个元素都等于该标量的向量。圆形(或角)分布使用范围为[的概率密度函数- - - - - -π
π
].如果系统中的某些状态表示角度量,如对象的方向,则使用循环变量。
块参数:CircularVariables |
类型:标量、矢量 |
默认值:0 |
国家取向
-输入系统状态的方向“列”
(默认)|“行”
系统状态的方向,指定为“列”
或“行”
.
如果国家取向被指定为:
“列”
,则状态转移和测量似然函数的第一个输入参数为[NsNp].在这种情况下,我th这个矩阵的列是我th粒子(状态假设)。此外,各州估计xhat输出为[Ns(1)向量。在这里,Ns状态数,和Np是粒子数。
“行”
,则状态转移和测量似然函数的第一个输入参数为[NpNs],矩阵的每一行都包含一个粒子。此外,各州估计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 × -Np或Np-by-1正向量,其中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 |
类型:特征向量 |
价值观:“关闭” ,“上” |
默认值:“关闭” |
重采样方法
-粒子重采样的方法多项式的
(默认)|“系统性”
|“分层”
用于粒子重采样的方法,指定为以下之一:
多项式的
“系统”
“分层”
块参数:ResamplingMethod |
类型:特征向量 |
价值观:多项式的 ,“系统性” ,“分层” |
默认值:多项式的 |
触发方法
-确定何时发生重采样的方法“比”
(默认)|“间隔”
方法来确定何时发生重新采样,指定为任意一种“比”
或“间隔”
.的“比”
值触发基于有效总粒子的比率重新采样。的“间隔”
值触发在粒子滤波操作的规则时间步重采样。
块参数:TriggerMethod |
类型:特征向量 |
价值观:“比” ,“间隔” |
默认值:“比” |
最小有效颗粒比
-有效粒子数与总粒子数的最小期望比率有效粒子数与粒子总数的最小期望比率,指定为正标量。有效粒子数是衡量当前粒子集逼近后验分布的程度。较低的有效粒子比意味着较低数量的粒子有助于估计,需要重新采样。
如果有效粒子数与总粒子数的比率低于最小有效粒子比,则触发重新采样步骤。
指定最小有效粒子比为0到1之间的任意值。
时,此参数有效系统模型选项卡,触发方法参数设置为比
.
块参数:MinEffectiveParticleRatio |
类型:标量 |
价值观:范围[0, 1] |
默认值:0.5 |
采样间隔
-固定的重采样间隔重新采样之间的固定间隔,指定为正标量整数。采样间隔决定在哪些校正步骤中执行重新采样。例如,值为2意味着每隔一个修正步骤执行一次重新采样。值为正
意味着永远不会执行重新采样。
时,此参数有效系统模型选项卡,触发方法参数设置为时间间隔
.
块参数:SamplingInterval |
类型:正标量整数 |
默认值:1 |
随机性
—随机数是否可重复“重复”
(默认)|不可重复的
随机数是否可重复,指定为任意一个“重复”
或不可重复的
.如果您希望能够多次产生相同的结果,请设置随机性来“重复”
中指定相同的随机数生成器种子值种子.
块参数:随机性 |
类型:特征向量 |
价值观:“重复” ,不可重复的 |
默认值:“重复” |
种子
-可重复随机数的种子值可重复随机数的种子值,指定为标量。
时,此参数有效系统模型选项卡,随机性参数设置为“重复”
.
块参数:种子 |
类型:标量 |
默认值:0 |
数据类型
—块参数的数据类型双
(默认)|单
使用此参数指定所有块参数的数据类型。
块参数:数据类型 |
类型:特征向量 |
价值观:“单一” ,“双” |
默认值:“双” |
样品时间
-分段采样时间1
(默认)|正标量块采样时间,指定为正标量。
使用样品时间如果您的状态转换和所有测量似然函数具有相同的采样时间,则为该参数。否则,选择启用多速率操作选项中的多重速率的选项卡,并在同一选项卡中指定采样时间。
时,此参数有效块输出,多速率选项卡,启用多速率操作参数是从
.
块参数:SampleTime |
类型:字符向量,字符串 |
默认值:' 1 ' |
状态估计方法
从粒子中提取状态估计的方法“的意思是”
(默认)|“MaxWeight”
|“没有”
从粒子中提取状态估计的方法,指定为下列之一:
“的意思是”
- - -粒子滤波Block根据参数输出粒子的加权平均值权重而且粒子据国家估计。
“Maxweight”
- - -粒子滤波块输出具有最高权重的粒子作为状态估计。
“没有”
-使用此选项可通过访问所有粒子来实现自定义状态估计方法输出所有粒子参数。块输出,多速率选项卡。
块参数:StateEstimationMethod |
类型:字符向量,字符串 |
价值观:“的意思是” ,“MaxWeight” ,“没有” |
默认值:“的意思是” |
输出所有粒子
-输出所有粒子“关闭”
(默认)|“上”
如果您选择该参数,用于估计的粒子的输出端口,粒子在块中生成。
如果StateOrientation
参数被指定为“列”
,则粒子输出为anNs——- - - - - -Np数组中。Ns系统的状态数,和Np是粒子数。
如果StateOrientation
参数被指定为“行”
,则粒子输出为anNp——- - - - - -Ns数组中。
块参数:OutputParticles |
类型:特征向量 |
价值观:“关闭” ,“上” |
默认值:“关闭” |
输出权值
-输出颗粒权重“关闭”
(默认)|“上”
如果选择此参数,则用于估计颗粒权重的输出端口,权重在块中生成。
如果StateOrientation
参数被指定为“列”
,则以1 × -的形式输出粒子权值Np向量。在这里,每个权重都与同一列中的粒子相关联粒子
数组中。Np用于状态估计的粒子数。
如果StateOrientation
参数被指定为“行”
,则将粒子权值输出为aNp1的向量。
块参数:OutputWeights |
类型:特征向量 |
价值观:“关闭” ,“上” |
默认值:“关闭” |
输出状态估计误差协方差
-输出状态估计误差协方差“关闭”
(默认)|“上”
如果选择此参数,一个状态估计误差协方差输出端口,P在块中生成。
时,此参数有效块输出,多速率选项卡,状态估计法参数设置为“的意思是”
.
块参数:OutputStateCovariance |
类型:特征向量 |
价值观:“关闭” ,“上” |
默认值:“关闭” |
使用当前测量来改进状态估计
-选项使用当前测量状态估计“上”
(默认)|“关闭”
当选择此参数时,块输出修正后的状态估计
时间步长k
,估计使用测量输出直到时间k
.如果清除此参数,块将返回预测的状态估计
时间k
,使用测量到的输出直到前一个时间估计k - 1
.如果过滤器处于反馈循环中,并且在Simulink模型中存在代数循环,则清除此参数。金宝app
块参数:UseCurrentEstimator |
类型:特征向量 |
价值观:“上” ,“关闭” |
默认值:“上” |
启用多速率操作
-为状态转换和测量似然函数启用不同采样时间的规范“关闭”
(默认)|“上”
如果状态转换的采样次数或任何测量似然函数与其他函数不同,则选择此参数。中指定采样时间多重速率的选项卡,在样品时间.
块参数:EnableMultirate |
类型:特征向量 |
价值观:“关闭” ,“上” |
默认值:“关闭” |
样品时间
-状态转换和测量似然函数采样次数如果状态转换和测量似然函数的采样时间不同,请指定样品时间.将测量函数的采样时间指定为状态转换采样时间的正整数倍。您指定的采样时间对应于以下输入端口:
状态转换函数对应的端口-状态转换函数的附加输入StateTransitionFcnInputs.这些端口的采样时间必须总是等于状态转移函数采样时间,但可以不同于测量似然函数的采样时间。
对应的端口我th测量似然函数-测量输出y我
,测量似然函数的额外输入MeasurementLikelihoodFcn我
输入,使能端口信号启用我
.对于相同的测量似然函数,这些端口的采样时间必须始终相同,但对于状态转移函数和其他测量似然函数,这些端口的采样时间可能不同。
时,此参数有效块输出,多速率选项卡,启用多速率操作参数是在
.
块参数: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国家站点没有针对您所在位置的访问进行优化。