卡尔曼滤波matlab仿真

卡尔曼滤波是一种递归的估计,即只要获知上一时刻状态的估计值以及当前状态的观测值就可以计算出当前状态的估计值,因此不需要记录观测或者估计的历史信息。
框图如下:
卡尔曼滤波matlab仿真_第1张图片
这里不涉及具体的推导过程,站在巨人的肩膀上,直接使用结果:
卡尔曼滤波器的递归过程:
1) 估计时刻k 的状态:
X(k) = A*X(k-1) + B*u(k)
这里, u(k) 是系统输入

2) 计算误差相关矩阵P, 度量估计值的精确程度:
P(k) = A*P(k-1)*A’+ Q
这里, Q = E{ Wj^2 } 是系统噪声的协方差阵,即系统框图中的Wj的协方差阵, Q 应该是不断变化的,为了简化,当作一个常数矩阵。

3) 计算卡尔曼增益, 以下略去 (k), 即 P = P(k), X = X(k):
K = P C’ (C * P * C’ + R) -1
这里 R = E{ Vj^2 }, 是测量噪声的协方差(阵), 即系统框图中的 Vj 的协方差, 为了简化,也当作一个常数矩阵。由于我们的系统一般是单输入单输出,所以 R是一个 1x1的矩阵,即一个常数,上面的公式可以简化为:
K = P C’ / (C P * C’ + R)

4) 状态变量反馈的误差量:
e = Z(k) – C*X(k)
这里的 Z(k) 是带噪声的测量量

5) 更新误差相关矩阵P

你可能感兴趣的:(matlab)