卡尔曼滤波

核心思想:根据当前的仪器"测量值" 和上一刻的 “预测量” 和 “误差”,计算得到当前的最优量,再预测下一刻的量。里面比较突出的是观点是:把误差纳入计算,而且分为预测误差和测量误差两种,通称为噪声。还有一个非常大的特点是:误差独立存在,始终不受测量数据的影响。

优点:巧妙的融合了观测数据与估计数据,对误差进行闭环管理,将误差限定在一定范围。适用性范围很广,时效性和效果都很优秀。

缺点:需要调参,参数的大小对滤波的效果影响较大。

卡尔曼滤波有一定的去噪稳定特性的,虽然效果不是特别优秀。卡尔曼滤波的普适性很强,尤其在控制与多传感器融合方向,只要参数调整的好,效果出奇优秀。

class KalmanFilter:
    def __init__(self, q=0.001, r=0.001):
        self.q = q  # 过程噪声协方差
        self.r = r  # 测量噪声协方差
        self.p = 5  # 估计误差协方差
        self.k_gain = 0  # 卡尔曼增益
        self.prev_data = 0  # 先前数据值

    def update(self, measurement):
        # 预测
        self.p += self.q
        # 计算卡尔曼增益
        self.k_gain = self.p / (self.p + self.r)
        # 更新估计值
        estimation = self.prev_data + self.k_gain * (measurement - self.prev_data)
        # 更新估计误差协方差
        self.p = (1 - self.k_gain) * self.p
        # 更新先前数据值
        self.prev_data = estimation

        return estimation

# 测试
kf = KalmanFilter(q=0.001, r=0.001)
input_data = 5
filtered_data = kf.update(input_data)
print("滤波后的值:", filtered_data)


import numpy as np
import matplotlib.pyplot as plt

# 生成模拟传感器数据(示例数据)
np.random.seed(123456)
sensor_data = np.random.randn(200)  # 正态分布随机数据


n = 11 # 在多少个数中取中间值,必须为奇数

filtered_sensor_data = np.zeros_like(sensor_data)
for i in range(1,len(sensor_data)):
    src_data = sensor_data[i]
    filtered_sensor_data[i] = kf.update(src_data)

# 绘制原始数据和滤波后数据
plt.figure(figsize=(10, 6))
plt.plot(sensor_data,c="green")
plt.plot(filtered_sensor_data,c="red")

plt.show()

 

相关推荐

  1. 滤波

    2024-03-27 19:46:04       19 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-27 19:46:04       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-27 19:46:04       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-27 19:46:04       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-27 19:46:04       20 阅读

热门阅读

  1. Mac OS 开启原生NTFS读写功能

    2024-03-27 19:46:04       16 阅读
  2. vue3 + ts + vite 支持低版本的浏览器

    2024-03-27 19:46:04       18 阅读
  3. Python数据分析三

    2024-03-27 19:46:04       14 阅读
  4. 软件开发工具(自考小资料)

    2024-03-27 19:46:04       18 阅读
  5. AI赋能写作:ChatGPT让论文大放异彩

    2024-03-27 19:46:04       18 阅读
  6. 5.85 BCC工具之tcprtt.py解读

    2024-03-27 19:46:04       18 阅读
  7. C++入门

    C++入门

    2024-03-27 19:46:04      18 阅读
  8. Python石头、剪刀、布游戏

    2024-03-27 19:46:04       18 阅读
  9. STEP 格式三维模型读取

    2024-03-27 19:46:04       21 阅读