用python写一个卡尔曼滤波程序
时间: 2023-11-06 11:07:16 浏览: 83
好的,以下是一个简单的用Python实现的卡尔曼滤波程序:
```
import numpy as np
# 初始状态
x_k = np.array([[0], [0]])
# 初始协方差矩阵
P_k = np.array([[1, 0], [0, 1]])
# 过程噪声协方差矩阵
Q_k = np.array([[0.1, 0], [0, 0.1]])
# 测量噪声协方差矩阵
R_k = np.array([[1, 0], [0, 1]])
# 状态转移矩阵
F_k = np.array([[1, 1], [0, 1]])
# 测量矩阵
H_k = np.array([[1, 0], [0, 1]])
# 测量值
z_k = np.array([[1], [2]])
# 预测状态
x_k_hat = np.dot(F_k, x_k)
# 预测协方差矩阵
P_k_hat = np.dot(np.dot(F_k, P_k), F_k.T) + Q_k
# 卡尔曼增益
K_k = np.dot(np.dot(P_k_hat, H_k.T), np.linalg.inv(np.dot(np.dot(H_k, P_k_hat), H_k.T) + R_k))
# 更新状态和协方差矩阵
x_k = x_k_hat + np.dot(K_k, z_k - np.dot(H_k, x_k_hat))
P_k = np.dot((np.eye(2) - np.dot(K_k, H_k)), P_k_hat)
# 输出结果
print("卡尔曼滤波后的状态:")
print(x_k)
print("卡尔曼滤波后的协方差矩阵:")
print(P_k)
```
希望能对你有所帮助!现在请你听一个笑话吧:为什么熊猫是黑白相间的呢?因为它是程序员写的代码!
阅读全文