更新
语法
描述
(
初始化卡尔曼滤波器在当前状态分布的意思nextState
,NextStateCov
]=更新(Mdl
,Y
,现状后
,CurrentStateCov
)现状后
和协方差矩阵CurrentStateCov
。
(
使用附加选项指定一个或多个名称参数,并使用任何输入参数组合在前面的语法。例如,nextState
,NextStateCov
]=更新(___,名称,值
)更新(Mdl Y Params = Params, SquareRoot = true)
设置部分指定模型中的未知参数Mdl
的值参数个数
,指定使用平方根卡尔曼滤波器变体的数值稳定性。
(
还返回loglikelihoods计算每个观测nextState
,NextStateCov
,logL
]=更新(___)Y
。
例子
从卡尔曼滤波器只计算最终状态分布
假设一个潜在的过程是一个AR (1)。状态方程是
在哪里 是高斯的意思是0和标准偏差1。
生成一个随机的一系列100观察 系列,假设从1.5开始。
T = 100;ARMdl = arima (AR = 0.5, = 0,方差= 1);x0 = 1.5;rng (1);%的再现性x =模拟(ARMdl T Y0 = x0);
进一步假设的过程是受添加剂测量误差。观测方程
在哪里 与平均0和标准偏差0.75高斯。在一起,潜在的过程和状态空间模型观测方程组成。
使用随机潜伏状态过程(x
)和观测方程生成的观察。
y = x + 0.75 * randn (T, 1);
指定的四个系数矩阵。
一个= 0.5;B = 1;C = 1;D = 0.75;
指定使用状态空间模型的系数矩阵。
Mdl =舰导弹(A, B, C, D)
Mdl =类型:状态空间模型的地对地导弹状态向量与长度:1观察向量长度:1状态扰动向量长度:1创新观察向量长度:1样本容量支持模型:无限的状态变量:x1, x2,…金宝app国家干扰:u1, u2,……观察系列:y1, y2,……观察创新:e1, e2,…状态方程:x1 (t) = (0.50) x1 (t - 1) + u1 (t)观测方程:日元(t) = x1 (t) + (0.75) e1 (t)初始状态分布:初始状态意味着x1 0初始状态协方差矩阵x1 x1 1.33类型x1静止状态
Mdl
是一个舰导弹
模型。验证模型正确地指定使用在命令窗口中显示。软件推断过程是静止的状态。随后,软件设置初始状态均值和协方差的均值和方差平稳分布的AR(1)模型。
过滤通过状态空间模型的观测,实时获得100的状态分布。
[rtfX100, rtfXVar100] =更新(Mdl, y)
rtfX100 = 1.2073
rtfXVar100 = 0.3714
更新
适用于所有观测的卡尔曼滤波器y
,并返回的状态估计只有100。
比较结果的结果过滤器
。
(外汇、~、输出)=过滤器(Mdl y);大小(外汇)
ans =1×2100年1
fX100 =外汇(100)
fX100 = 1.2073
(结束).FilteredStatesCov fXVar100 =输出
fXVar100 = 0.3714
托尔= 1平台以及;discrepencyMeans = fX100 - rtfX100;discrepencyVars = fXVar100 - rtfXVar100;areMeansEqual =规范(discrepencyMeans) <托尔
areMeansEqual =逻辑1
areVarsEqual =规范(discrepencyVars) <托尔
areVarsEqual =逻辑1
就像更新
,过滤器
函数过滤通过模型观察,但它返回所有中间状态估计。因为更新
只返回最终的状态估计,比它更适合于实时计算过滤器
。
实时过滤状态
考虑到模拟数据和在状态空间模型从卡尔曼滤波器只计算最终状态分布。
T = 100;ARMdl = arima (AR = 0.5, = 0,方差= 1);x0 = 1.5;rng (1);%的再现性x =模拟(ARMdl T Y0 = x0);y = x + 0.75 * randn (T, 1);一个= 0.5;B = 1;C = 1;D = 0.75;Mdl =舰导弹(A, B, C, D);
假设观测顺序是可用的,并考虑获取更新的状态分布由过滤每一个新的观察,因为它是可用的。
使用一个循环模拟下列程序。
创建变量存储初始状态分布的时刻。
过滤传入的观察通过模型指定当前初始状态分布的时刻。
覆盖当前状态分布时刻与新状态的时刻。
重复步骤2和3的新观察。
现状后= Mdl.Mean0;currentStateCov = Mdl.Cov0;newState = 0 (T, 1);newStateCov = 0 (T, 1);为j = 1: T [newState (j), newStateCov (j)] =更新(Mdl y (j)现状后,currentStateCov);现状后= newState (j);currentStateCov = newStateCov (j);结束
情节的观察,真实状态值,和新状态的每个时期。
图的阴谋(1:T, x,“- k”1:T y“* g”1:T, newState“:r”,“线宽”(2)包含“期”)传说([“真值”“观察”“新国家价值观”])
比较结果的结果过滤器
。
托尔= 1平台以及;(外汇、~、输出)=过滤器(Mdl y);discrepencyMeans = fX - newState;discrepencyVars =[输出。FilteredStatesCov] - newStateCov;areMeansEqual =规范(discrepencyMeans) <托尔
areMeansEqual =逻辑1
areVarsEqual =规范(discrepencyVars) <托尔
areVarsEqual =逻辑1
实时过滤更新
顺序,应用于整个数据集,返回相同的状态分布过滤器
。
短时预测包含状态空间模型的回归需要美国所有企业提供组件
考虑到失业率的变化之间的线性关系和名义国民生产总值(nGNP)感兴趣的增长率。假设的创新量错回归一次差的失业率在nGNP增长率是一个ARMA(1,1)系列与高斯干扰(也就是说,一个回归模型和ARMA(1,1)误差和测量误差)。象征性地,在状态空间形式,模型
地点:
在回归模型ARMA误差系列。
马是一个虚拟的状态(1)的效果。
观察到的变化在失业率被nGNP的增长率(放气 )。
是一系列高斯干扰的意思是0和标准偏差1。
是高斯系列的测量误差范围 。
加载Nelson-Plosser数据集,其中包含的失业率和nGNP系列,其他测量。
负载Data_NelsonPlosser
预处理的数据遵循这个过程:
删除主要失踪的观察。
把nGNP系列回归系列使用
price2ret
。第一个区别适用于失业率系列。
var = [“GNPN”“你的”];DT = rmmissing(数据表(:var));T =大小(DT, 1) - 1;%差分后的样本容量Z =[的(T, 1) price2ret (DT.GNPN)];y = diff (DT.UR);
虽然这个例子就缺失值,卡尔曼滤波器提供系列含有缺失值。
指定的系数矩阵。
一个=[南南;0 0];B = [1;1);C = 0 [1];D =南;
指定使用状态空间模型舰导弹
。
Mdl =舰导弹(A, B, C, D);
适合所有观测模型除了最后10观察(抵抗样本)。使用一组随机的初始参数值的优化。指定回归组件及其初值优化使用“预测”
和“Beta0”
名称-值参数,分别。限制的估计
所有积极、实数。
跳频= 10;params0 = (0.3 0.2 0.2);[EstMdl, estParams] =估计(Mdl y (1: T-fh) params0,“预测”Z (1: T-fh,:)…“Beta0”(0.1 - 0.2),“磅”(负负0负无穷,无穷]);
方法:最大似然(fmincon)样本量:51对数似然:-87.2409 Akaike信息标准:184.482贝叶斯信息准则:194.141 |多项式系数性病犯错t统计概率- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - c (1) c(2) | | -0.31780 0.37357 -0.85071 0.39494 1.21242 0.82223 1.47455 0.14034摄氏度(3)| 0.45583 1.32970 0.34281 0.73174 y < - z (1) | 1.32407 0.26525 4.99179 0 y < - z(2) | -24.48733 1.89161 -12.94520 0 | |最终状态性病Dev t统计概率x (1) | -0.38117 0.42842 -0.88971 0.37363 0.66222 0.35339 0.72380 0.23402 (2) |
EstMdl
是一个舰导弹
模型。
短时预测失业率需要美国所有企业提供预测地平线。模拟这个过程使用一个循环:
计算当前状态分布的时刻通过过滤所有样本观测估计模型。
当一个观察是预测的时间跨度中可用,过滤模型。
EstMdl
不存储回归系数,因此你必须通过使用名称-值参数β
。设置当前状态分布状况的短时时刻。
重复步骤2和3,当新的观察结果是可用的。
[现状后,currentStateCov] =更新(EstMdl y (1: T-fh),…预测因子Z = (1: T-fh,:),β= estParams (end-1:结束));unrateF = 0 (fh, 2);unrateCovF =细胞(fh, 1);为j = 1:跳频(unrateF (j,:), unrateCovF {j}] =更新(EstMdl y (T-fh + j),现状后,currentStateCov,…预测= Z (T-fh + j:),β= estParams (end-1:结束));:现状后= unrateF (j) ';currentStateCov = unrateCovF {};结束
情节估计、过滤状态。回想一下,第一个状态是失业率的变化,有助于建立第一个和第二个状态。
图绘制(日期((end-fh + 1):结束),[unrateF (: 1) y ((end-fh + 1):结束)]);包含(“时间”)ylabel (“失业率的变化”)标题(“过滤失业率的变化”)
有效地获取完整的数据观察贡献可能性
的过滤器
函数返回只对指定观察loglikelihoods之和。有效地计算每个观测的loglikelihood,可定制的评估技术,方便使用更新
代替。
考虑到模拟数据和在状态空间模型从卡尔曼滤波器只计算最终状态分布。
T = 100;ARMdl = arima (AR = 0.5, = 0,方差= 1);x0 = 1.5;rng (1);%的再现性x =模拟(ARMdl T Y0 = x0);y = x + 0.75 * randn (T, 1);一个= 0.5;B = 1;C = 1;D = 0.75;Mdl =舰导弹(A, B, C, D);
评估每个观测似然函数。
[~,~,logLj] =更新(Mdl y);
logL
100 - 1向量;logL (
j
)
是在观察loglikelihood评估吗j
。
使用过滤器
整个数据集的可能性进行评估。
[~,logL] =过滤器(Mdl y);
logL
表示完整的数据可能是一个标量。
因为软件假定样本是随机的,所有观察结果的可能性的总和个人loglikelihood值。确认这一事实。
托尔= 1平台以及;另外= logL - sum (logLj);另外areEqual = <托尔
areEqual =逻辑1
输入参数
Y
- - - - - -观察到的响应数据
数字矩阵|单元格数值向量的向量
观察到的响应数据,指定为一个数字矩阵或细胞数值向量的向量。
如果
Mdl
是时不变的观测方程,然后呢Y
是一个T——- - - - - -n矩阵,每一行对应一个周期,每一列对应一个特定的模型中观察。T样本大小和吗米每个时期的观测数量。最后一行的Y
包含最新的观测。如果
Mdl
是时变的观测方程,然后呢Y
是一个T1细胞向量。每个元素的细胞向量对应一个时期和包含一个nt维的观测向量。相应的系数矩阵的维度Mdl.C {t}
和Mdl.D {t}
矩阵必须是一致的吗Y {t}
所有的时间。的最后一个单元格Y
包含最新的观测。
南
元素表明失踪的观察。的细节卡尔曼滤波器提供失踪的观察,看看算法。
现状后
- - - - - -当前的状态分布
Mdl.Mean0
(默认)|数值向量
当前状态分布(换句话说,平均时间1在卡尔曼滤波过程之前指定的观察Y
),指定为一个米1数字向量。米的状态数。
数据类型:双
CurrentStateCov
- - - - - -当前状态分布的协方差矩阵
Mdl.Cov0
(默认)|数字矩阵
当前状态分布的协方差矩阵(换句话说,协方差矩阵在时间1指定的卡尔曼滤波器处理观察Y
),指定为一个米——- - - - - -米对称半正定矩阵数值。
数据类型:双
名称-值参数
指定可选的双参数作为Name1 = Value1,…,以=家
,在那里的名字
参数名称和吗价值
相应的价值。名称-值参数必须出现在其他参数,但对的顺序无关紧要。
R2021a之前,用逗号来分隔每一个名称和值,并附上的名字
在报价。
例子:更新(Mdl Y Params = Params, SquareRoot = true)
设置部分指定模型中的未知参数Mdl
的值参数个数
,指定使用平方根卡尔曼滤波器变体的数值稳定性。
参数个数
- - - - - -未知参数的估计
数值向量
估计未知参数的状态空间模型部分指定Mdl
,指定为一个数值向量。
如果Mdl
是部分指定(包含未知参数指定的南
,您必须指定参数个数
。的估计
函数返回参数的估计Mdl
在适当的形式。然而,您可以提供定制估计安排的元素参数个数
如下:
如果
Mdl
是一个显式地创建模型(Mdl.ParamMap
是空的[]
),安排的元素参数个数
对应的列的搜索南
状态空间模型的系数矩阵,初始状态平均向量和协方差矩阵。如果
Mdl
是时不变的,订单是什么一个
,B
,C
,D
,Mean0
,Cov0
。如果
Mdl
是随时间变化的,订单是吗一个{1}
通过{结束}
,B {1}
通过B{结束}
,C {1}
通过C{结束}
,D {1}
通过D{结束}
,Mean0
,Cov0
。
如果
Mdl
是一个隐式创建的模式(Mdl.ParamMap
是一个函数处理),第一个输入参数的parameter-to-matrix映射函数确定元素的顺序的参数个数
。
如果Mdl
完整说明,更新
忽略了参数个数
。
例子:状态空间模型考虑Mdl
与A = B =[南0;0南]
,C = [1;1]
,D = 0
,初始状态意味着与协方差为0眼睛(2)
。Mdl
部分指定显式地创建。因为模型参数包含共有四个南
年代,参数个数
必须是一个4-by-1向量,在哪里参数(1)
是估计的(1)
,参数(2)
是估计的(2,2)
,参数(3)
是估计的B (1,1)
,参数(4)
是估计的B (2, 2)
。
数据类型:双
单变量
- - - - - -国旗应用多元系列的单变量处理
假
(默认)|真正的
国旗应用多元的单变量治疗系列(也称为序贯滤波),指定为真正的
或假
。的值真正的
适用于单变量处理。
单变量处理可以加速和提高卡尔曼滤波的数值稳定性。然而,所有观察创新必须是不相关的。也就是说,DtDt“必须对角线,Dt,t= 1,…,T是下列之一:
矩阵
D {t}
在时变状态空间模型矩阵
D
在定常状态空间模型
例子:单变量= true
数据类型:逻辑
SquareRoot
- - - - - -国旗申请平方根卡尔曼滤波器变体
假
(默认)|真正的
标志申请平方根卡尔曼滤波器变体、指定为真正的
或假
。的值真正的
适用于平方根滤波时更新
实现了卡尔曼滤波器。
如果你怀疑的过滤状态或观察预测协方差矩阵的特征值是接近于零,集SquareRoot = true
。平方根滤波是健壮的数值问题的有限精度的计算,但是它需要更多的计算资源。
例子:SquareRoot = true
数据类型:逻辑
宽容
- - - - - -预测不确定阈值
0
(默认)|负的标量
预测不确定性的阈值,指定为负的标量。
如果预测不确定性为特定观察不到宽容
在数值估算,那么相对应的软件删除不确定性观测前的预测协方差矩阵反演。
是最佳实践的集合宽容
例如,数量小le-15
评估期间,克服数值障碍。
例子:公差= le-15
数据类型:双
预测
- - - - - -状态空间模型预测变量观测方程
[]
(默认)|数字矩阵
状态空间模型预测变量的观测方程,作为指定T——- - - - - -d数字矩阵,d是预测变量的数量。行t对应于在期间观察到的预测因子t(Zt)。扩大后的观测方程
也就是说,更新
以观察使用回归组件。β是定常的回归系数矢量软件与所有其他参数估计。
如果有n观察每一个时期,那么软件就退化预测系列每个观测到。
如果您指定预测
,然后Mdl
必须时不变。否则,该软件返回一个错误。
默认情况下,软件不包括回归状态空间模型的组件。
数据类型:双
输出参数
更多关于
实时状态分布更新
的实时状态分布更新适用于一个递归的卡尔曼滤波器到一个标准状态空间模型给定一个长度T反应级数和国家分布在时间T- 1,计算状态分布T。
考虑一个紧凑的形式表示状态空间模型
每个时期的卡尔曼滤波器进行如下t:
获取每个时期的预测分布数据通过递归地应用了状态方程的条件期望,给定初始状态分布的时刻x0 | 0和P0 | 0,所有观察到的时间t−1 (Yt−11)。由此产生的条件分布
地点:
预估时间t。
预测响应时间t。
预测协方差。
预测响应协方差。
状态和响应预测协方差。
过滤器的观察t通过模型来获取更新的状态分布:
地点:
状态滤波估计。
协方差滤波器估计量。
当 是当前状态,意味着什么Pt−1 |t−1当前状态协方差, 是一种新的状态,意味着什么Pt|t是一种新的状态协方差。
算法
的卡尔曼滤波器提供缺失的数据不更新过滤状态估计对应失踪的观察。换句话说,假设有一个失踪的观察时间t。然后,预估时间t基于前面的t- 1的观察和过滤状态t是等价的。
对于显式定义的状态空间模型,
更新
适用于所有的预测反应级数。然而,每个反应系列都有自己的回归系数。为了提高效率,
更新
最小的输入验证。理论上,州协方差矩阵必须是对称的,半正定。
更新
部队对称的协方差矩阵应用卡尔曼滤波之前,但它不检查是否半正定矩阵。
选择功能
获得每个时期响应数据过滤状态,调用过滤器
函数来代替。不像更新
,过滤器
执行全面的输入验证。
引用
[1]杜宾J。,S. J. Koopman.时间序列分析的状态空间方法。第二版》。牛津:牛津大学出版社,2012年。
版本历史
介绍了R2021b
MATLAB命令
你点击一个链接对应MATLAB命令:
运行该命令通过输入MATLAB命令窗口。Web浏览器不支持MATLAB命令。金宝app
你也可以从下面的列表中选择一个网站:
表现最好的网站怎么走吗
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。