前面讲到没有外部控制输入,也没有其他动态模型来描述温度如何随时间变化。因此,状态x的预测值就是上一个状态的值。
默认在没有新的观测数据时,室温是恒定不变的。但在实际情况中,室温可能会随时间上升或下降,比如因为暖气的开启或窗户的打开。我们可以通过引入一个状态转换模型来考虑这种温度变化。
假设我们使用一个简单的线性模型来描述这种变化,其中每次预测时,我们认为温度会上升(或下降)一个固定的值,这个值我们称之为u
。u
可以是一个正值(表示温度上升)或一个负值(表示温度下降)。
下面是一个完善的卡尔曼滤波器类,其中添加了状态转移模型:
class KalmanFilter1D {
private:
double x; // 估算值
double P; // 估算值的不确定度