这个例子展示了如何通过传递一个描述模型的参数映射函数来创建一个时变的状态空间模型舰导弹
(例如,隐式地创建状态空间模型)。
假设从周期1到10,状态模型分别是平稳的AR(2)和MA(1)模型,观测模型是这两种状态的和。从时期11到20,状态模型只包括第一个AR(2)模型。
象征性地,这些模型是:
编写一个函数,指定参数如何在参数个数
映射到状态空间模型矩阵、初始状态值和状态类型。
版权所有2015 The MathWorks, Inc.函数[A, B, C, D, Mean0 Cov0, StateType] = timeVariantParamMap (params)%时变状态空间模型参数映射函数示例。这函数将向量参数映射到状态空间矩阵(A、B、C和% D)、初始状态值和初始状态方差(Mean0和% Cov0)和状态类型(StateType)。从第1节到第10节状态模型为AR(2)和MA(1)模型,观测模型为两种状态之和。从第11阶段到第20阶段,状态模型是%只是AR(2)模型。varu11 = exp (params (3));正方差约束vare11 = exp (params (6));vare12 = exp (params (8));A1 = {[params(1) params(2) 0 0;1 0 0 0;0 0 0 params(4);0 0 0};B1 ={[根号(varu11) 0;0 0;0 1;0 1]}; C1 = {params(5)*[1 0 1 0]}; D1 = {sqrt(vare11)}; Mean0 = [0.5 0.5 0 0]; Cov0 = eye(4); StateType = [0 0 0 0]; A2 = {[params(1) params(2) 0 0; 1 0 0 0]}; B2 = {[sqrt(varu11); 0]}; A3 = {[params(1) params(2); 1 0]}; B3 = {[sqrt(varu11); 0]}; C3 = {params(7)*[1 0]}; D3 = {sqrt(vare12)}; A = [repmat(A1,10,1);A2;repmat(A3,9,1)]; B = [repmat(B1,10,1);B2;repmat(B3,9,1)]; C = [repmat(C1,10,1);repmat(C3,10,1)]; D = [repmat(D1,10,1);repmat(D3,10,1)];结束
将此代码保存为一个名为timeVariantParamMap.m
在您的MATLAB®路径。
通过传递函数创建状态空间模型timeVariantParamMap
的函数句柄舰导弹
.
Mdl =舰导弹(@timeVariantParamMap);
舰导弹
隐式地创建状态空间模型。通常,您不能验证隐式创建的状态空间模型。
Mdl
是一个舰导弹
模型对象包含未知参数。您可以通过传递来估计未知参数Mdl
和响应数据估计
.