卡尔曼滤波算法的 Python 代码
时间: 2023-11-03 15:58:53 浏览: 87
我可以回答你关于卡尔曼滤波算法Python代码的问题,以下是一个简单的实现示例代码:
```python
import numpy as np
# 状态转移矩阵
A = np.array([[1, 0], [0, 1]])
# 状态更新矩阵
B = np.array([[1, 0], [0, 1]])
# 测量更新矩阵
H = np.array([[1, 0], [0, 1]])
# 状态协方差矩阵
P = np.array([[1, 0], [0, 1]])
# 测量噪声协方差矩阵
R = np.array([[1, 0], [0, 1]])
# 状态噪声协方差矩阵
Q = np.array([[1, 0], [0, 1]])
# 初始状态
x_init = np.array([[0], [0]])
def kalman_filter(z, x_esti, P):
# 预测步骤
x_pred = np.dot(A, x_esti) + np.dot(B, u)
P_pred = np.dot(np.dot(A, P), A.T) + Q
# 更新步骤
K = np.dot(np.dot(P_pred, H.T), np.linalg.inv(np.dot(np.dot(H, P_pred), H.T) + R))
x_esti = x_pred + np.dot(K, (z - np.dot(H, x_pred)))
P = np.dot((np.eye(2) - np.dot(K, H)), P_pred)
return x_esti, P
# 测试数据
z = np.array([[1], [2]])
u = np.array([[0], [0]])
# 进行一次卡尔曼滤波
x_esti, P = kalman_filter(z, x_init, P)
# 打印结果
print('esti: ', x_esti)
print('P: ', P)
```
注意:此代码仅为卡尔曼滤波算法简单实现,实际应用场景中需要酌情调整参数。
阅读全文