KalmanEstimator

KalmanEstimator[ssm, {w, v}]
对于具有过程和测量噪声协方差矩阵 wvStateSpaceModel ssm,构建卡尔曼估值器.

KalmanEstimator[ssm, {w, v, h}]
包含交叉耦合矩阵 h.

KalmanEstimator[{ssm, sensors}, {...}]
sensors 指定为 ssm 的噪声测量.

KalmanEstimator[{ssm, sensors, dinputs}, {...}]
dinputs 指定为 ssm 的决定性输入.

更多信息更多信息

  • 标准状态空间模型 ssm 可以以 StateSpaceModel[{a, b, c, d}] 形式给出,其中 abcd 表示连续时间或者离散时间系统中的状态、输入、输出和传递矩阵:
  • 连续时间系统
    离散时间系统
  • 连续时间或者离散时间中,描述性状态空间模型 ssm 可以以 StateSpaceModel[{a, b, c, d, e}] 形式给出:
  • 连续时间系统
    离散时间系统
  • 输入 可以包含过程噪声 以及决定性输入 .
  • 参数 dinputs 是指定 的位置的整数列表.
  • 输出 包含噪声测量 以及其他输出.
  • 参数 sensors 是指定 的位置的整数列表.
  • 参数 sensorsdinputs 也可以接受数值 AllNone.
  • KalmanEstimator[ssm, {...}] 等价于 KalmanEstimator[{ssm, All, None}, {...}].
  • 噪声测量根据 建模,其中 是与 相关的子矩阵 ,而 是噪声.
  • 假定过程和测量噪声是白噪声以及高斯噪声:
  • , 过程噪声
    , 测量噪声
  • 过程噪声和测量噪声之间的互协方差由 给出.
  • 默认情况下,假定互协方差矩阵 为一个零矩阵.
  • KalmanEstimator 支持 Method 选项. 可以给出下列明确设置:
  • "CurrentEstimator"构建当前估值器
    "PredictionEstimator"构建预测估值器
  • 当前估计值基于到当前瞬时为止的测量值.
  • 预测估计值基于到前一瞬时为止的测量值.
  • 对于标准连续时间系统,当前和预测估值器相同,而估值器动态根据 给出.
  • 连续时间系统的最优增益根据 l=x_r.c_n.TemplateBox[{r}, Inverse]计算,其中 求解连续代数黎卡提方程 a.x_r+x_r.a-x_r.c_n.TemplateBox[{r}, Inverse].c_n.x_r+b_w.q.b_w=0.
  • 具有估值器的连续时间系统的方框图:
  • 具有下标 的矩阵是分别与确定性输入、随机输入和噪声测量值相关联的子矩阵.
  • 对于离散时间系统,预测估值器的动态性由 给出. 具有预测估值器的离散时间系统的方框图与上图相同.
  • 对于离散时间系统,当前估值器的动态性为 ,而当前状态估计值 从当前测量值 得到,为 .
  • 离散时间系统的最优裕值根据 l=a.x_r.c_n.TemplateBox[{{(, {{{c, _, n}, ., {x, _, r}, ., {{c, _, n}, }}, +, v}, )}}, Inverse]计算,其中 求解离散代数黎卡提方程 a.x_r.a-x_r-a.x_r.c_n.TemplateBox[{{(, {{{c, _, n}, ., {x, _, r}, ., {{c, _, n}, }}, +, v}, )}}, Inverse].c_n.x_r.a+b_w.w.b_w=0.
  • 具有当前估值器的离散时间系统的方框图:
  • 卡尔曼估值器模型的输入是确定性输入 和噪声测量值 .
  • 卡尔曼估值器模型的输出包含所估计的状态 以及噪声测量值 的估计值.
  • 如果 是非奇异的,组对 是可探测的,并且对于任意 是可镇定的,那么该最优估值器是渐进稳定的.

范例范例打开所有单元关闭所有单元

基本范例 (3)基本范例 (3)

连续时间系统的卡尔曼估值器:

In[1]:=
Click for copyable input
Out[1]=

具有一个随机输出的系统的卡尔曼估值器:

In[1]:=
Click for copyable input
Out[1]=

离散时间卡尔曼估值器:

In[1]:=
Click for copyable input
Out[1]=
版本 8 的新功能 | 版本 9 修改功能
New to Mathematica? Find your learning path »
Have a question? Ask support »