假设你去一个风景区旅游时候,种下一棵果树,但显然从果树苗到果实不是一天两天能完成对。需要慢慢长高。而你又不可能经常去看,但又想知道树的高度,哪怎么办? 所以要解决的问题是:如何正确估计一棵果树的高度?
我们想要知道的果树高度叫做待估的状态变量。 我们想一年知道一次,这个叫做步长。
你需要知道种下果树时候的大概高度,于是你想了想, 大概1米吧,但也不确定,有可能90公分。也可能110公分,于是这个1米,叫做你的初始状态估计,
这个10公分是不确定性。叫做状态估计误差的协方差矩阵,后续它随着你的下一步估计而变化。
怎么办呢?
你在网上查了查, 这种果树差不多每年都比前一年生长10%的高度(纯假设而已),这个生长的规律/模型就叫做状态转移矩阵。于是根据模型,假如,2017年幼1米, 2018年大概有1.1米。
但显然这个模型不适用于任意一颗果树和你种植当地的实际日照风土情况,而且你明明知道果树不可能无限增长。所以咱们的模型不可能是100%准确的,我们用一个叫做过程燥声的东西来衡量它。可以理解为模型递推下去的不准确度。 比如假设这个估计模型差在0.3米,这叫白噪声,过程噪声越小就意味着你相信生长模型很准,越大就表示模型越垃圾。
但经管如此还是不靠谱啊,闭门猜果树高度肯定不一定准,这个时候你需要找一下本地朋友看一眼。由于拜托他们帮忙,你也不要求他们拿尺子去量,大概给个数就行,这个朋友帮忙看到的高度就是测量值。
假设有朋友A和B,朋友A很认真,每次都拿尺子大概比一比,告诉你大概多少分米来说,比如大概1米8到1米9. 而朋友B不认真,只喵一眼说大概1.5 - 2米,但A有个坏处,比较懒,两年才给你发个短信。B比较勤快,每年都有。 这两年或者1年就叫做测量更新频率。我们需要他们尽可能的提供数据,所以两个都要采纳。而这两个测量一个来自尺子,一个来自视力,不同的测量类型我们都能同时使用,太好了。
但明显觉得A比B要靠谱一些, 于是认为A的精度分米级,B的精度在半米即,这个分米和半米叫做他俩的测量噪声。基于这个测量噪声你可以建立一个测量噪声矩阵,衡量在参考时对A和B的观测值的权重。
那么,你现在明白了,需要果树生长模型,这样即便A和B不给我数据,我也能大概估计出明年这个树的高度。但不不能只依靠模型,比如果树进入成熟期就不长了, 我们需要A和B的观察值去矫正估计,那么就需要把它们融合在一起。
于是这个模型里, 有个一衡量初始估计是否准确的矩阵叫做状态估计协方矩阵,有一个衡量生长模型准确度的过程噪声矩阵,从观察那里有一个衡量观测是否准确的矩阵叫做观察噪声协方差矩阵。
我们把它们融合在一起, 就变成了一个叫做增益矩阵的东西。 糊涂了? 别着急, 其实增益矩阵就做一件事情: 我到底应该相信我推的模型多,还是相信 来自A和B的观测量多呢》
于是通过增益矩阵和这一系列矩阵,你建立了一套系统:当模型比较准确时,我相信模型多一些,当它不准确时, 我相信实际测量多一些。 而还有一个优势,测量值帮我矫正模型的准确度; 当A和B突然不给我测量时, 我也能通过建立好的这套模型体系估计在下一步长(明年)果树的高度。
卡尔曼滤波就这样建立起来了。
最理想的情况下怎样, 最准确的果树初始高度及, =较小的状态估计误差
最准确的果树生长状态, =较小的过程噪声。
最准确的测量值, =较小的测量噪声, 而测量类型越多越好(尺子,视力)