首页 > 其他分享 >【有啥问啥】卡尔曼滤波(Kalman Filter):从噪声中提取信号的利器

【有啥问啥】卡尔曼滤波(Kalman Filter):从噪声中提取信号的利器

时间:2024-10-01 09:19:54浏览次数:8  
标签:预测 Kalman 卡尔曼滤波 噪声 观测 Filter 协方差 时刻

卡尔曼滤波

卡尔曼滤波(Kalman Filter):从噪声中提取信号的利器

什么是卡尔曼滤波?

卡尔曼滤波(Kalman Filter)是一种高效的递归滤波器,专为处理包含噪声的线性动态系统而设计。它能够从一系列不完全且含有噪声的测量中,估计出系统的内部状态。卡尔曼滤波通过结合系统的预测和观测数据,实现对系统状态的最优估计。其核心思想在于不断迭代地进行状态预测和更新,以最小化估计误差。

核心思想

  • 预测(Predict):基于系统的动态模型(即状态转移方程),利用上一时刻的状态估计值,预测当前时刻的状态。
  • 更新(Update):将预测值与当前时刻的观测值进行融合,通过卡尔曼增益加权,得到更准确的当前状态估计。

为什么需要卡尔曼滤波?

在现实世界中,传感器数据往往受到各种噪声的干扰,导致直接观测到的数据不准确。卡尔曼滤波通过引入系统模型和噪声统计特性,能够有效地抑制噪声,提高状态估计的准确性和可靠性。

卡尔曼滤波的数学基础

卡尔曼滤波基于以下两个基本假设:

  1. 线性系统假设:系统状态方程和观测方程都是线性的。
  2. 高斯噪声假设:系统噪声和观测噪声都服从高斯(正态)分布。

卡尔曼滤波的五个基本方程

  1. 状态预测方程
    x ^ ( k ∣ k − 1 ) = F x ^ ( k − 1 ∣ k − 1 ) + B u ( k ) \hat{x}(k|k-1) = F \hat{x}(k-1|k-1) + B u(k) x^(k∣k−1)=Fx^(k−1∣k−1)+Bu(k)
    其中, x ^ ( k ∣ k − 1 ) \hat{x}(k|k-1) x^(k∣k−1) 是基于 k − 1 k-1 k−1 时刻信息预测的 k k k 时刻状态, F F F 是状态转移矩阵, B B B 是控制输入矩阵, u ( k ) u(k) u(k) 是 k k k 时刻的控制输入。

  2. 误差协方差预测方程
    P ( k ∣ k − 1 ) = F P ( k − 1 ∣ k − 1 ) F T + Q P(k|k-1) = F P(k-1|k-1) F^T + Q P(k∣k−1)=FP(k−1∣k−1)FT+Q
    其中, P ( k ∣ k − 1 ) P(k|k-1) P(k∣k−1) 是预测误差协方差, Q Q Q 是系统噪声协方差矩阵。

  3. 卡尔曼增益
    K ( k ) = P ( k ∣ k − 1 ) H T ( H P ( k ∣ k − 1 ) H T + R ) − 1 K(k) = P(k|k-1) H^T (H P(k|k-1) H^T + R)^{-1} K(k)=P(k∣k−1)HT(HP(k∣k−1)HT+R)−1
    其中, K ( k ) K(k) K(k) 是卡尔曼增益, H H H 是观测矩阵, R R R 是观测噪声协方差矩阵。

  4. 状态更新方程
    x ^ ( k ∣ k ) = x ^ ( k ∣ k − 1 ) + K ( k ) ( z ( k ) − H x ^ ( k ∣ k − 1 ) ) \hat{x}(k|k) = \hat{x}(k|k-1) + K(k) (z(k) - H \hat{x}(k|k-1)) x^(k∣k)=x^(k∣k−1)+K(k)(z(k)−Hx^(k∣k−1))
    其中, x ^ ( k ∣ k ) \hat{x}(k|k) x^(k∣k) 是更新后的状态估计, z ( k ) z(k) z(k) 是 k k k 时刻的观测值。

  5. 误差协方差更新方程
    P ( k ∣ k ) = ( I − K ( k ) H ) P ( k ∣ k − 1 ) P(k|k) = (I - K(k) H) P(k|k-1) P(k∣k)=(I−K(k)H)P(k∣k−1)
    其中, P ( k ∣ k ) P(k|k) P(k∣k) 是更新后的误差协方差。

卡尔曼滤波的应用场景

卡尔曼滤波因其强大的噪声抑制和状态估计能力,在多个领域得到了广泛应用:

  • 航空航天:用于飞行器的导航、制导和控制。
  • 自动驾驶:在车辆定位、路径规划和障碍物检测中发挥重要作用。
  • 机器人技术:实现机器人的精确定位、姿态估计和路径规划。
  • 信号处理:在通信、音频和视频处理中,用于信号去噪和增强。
  • 金融分析:预测股票价格、汇率等金融指标的变化趋势。

卡尔曼滤波的实现步骤

  1. 建立系统模型:明确系统的动态特性,确定状态方程和观测方程,并设定初始状态估计和误差协方差。
  2. 预测:根据系统模型和上一时刻的状态估计,预测当前时刻的状态和误差协方差。
  3. 观测:获取当前时刻的观测数据。
  4. 更新:利用卡尔曼增益,将预测值与观测值进行融合,更新状态估计和误差协方差。
  5. 迭代:重复步骤2至4,不断迭代更新,实现对系统状态的实时估计。

卡尔曼滤波的案例说明

为了深入浅出并通俗易懂地解释卡尔曼滤波,我们可以举一个关于小车行驶位置的例子。

场景设定

假设有一辆小车,从原点出发,以恒定的速度自西向东做直线运动。我们知道在t-1时刻,小车距离原点的东侧6米处。现在,我们想要知道在t时刻小车的确切位置。

问题分析

  1. 预测值

    • 假设小车做匀速直线运动,我们可以根据上一时刻(t-1时刻)的位置和速度来预测当前时刻(t时刻)的位置。比如,如果小车速度是2m/s,那么从t-1到t时刻,小车应该前进了2米,所以预测位置是8米。
  2. 观测值

    • 同时,我们有一个雷达或GPS设备来观测小车的位置。在t时刻,这个设备告诉我们小车距离原点9米。但是,我们知道所有的测量设备都存在误差,所以这个观测值也不一定完全准确。

卡尔曼滤波的作用

卡尔曼滤波的作用就是结合预测值和观测值,给出一个更加准确的位置估计。它考虑了预测的不确定性(比如模型误差、速度变化等)和观测的不确定性(比如测量误差),通过数学方法计算出一个最优的估计值。

具体步骤

  1. 预测

    • 使用小车的运动模型(在这个例子中是匀速直线运动)来预测t时刻的位置。
    • 预测值(xt) = 上一时刻位置 + 速度 × 时间间隔 = 6m + 2m/s × 1s = 8m。
  2. 更新

    • 当我们得到雷达或GPS的观测值(zt = 9m)时,我们需要结合预测值和观测值来更新我们的位置估计。
    • 卡尔曼滤波通过计算一个“卡尔曼增益”(K),来决定预测值和观测值在最终估计中的权重。这个权重是基于预测和观测的不确定性来计算的。
    • 最终估计值 = 预测值 + 卡尔曼增益 × (观测值 - 预测值)。

通俗解释

想象一下,你有两个朋友,一个(预测朋友)根据小车的速度和上一时刻的位置来告诉你小车现在在哪里,另一个(观测朋友)则直接告诉你他看到的小车位置。但是,你知道这两个朋友都可能不完全准确。卡尔曼滤波就像是你自己,你听了两个朋友的建议后,根据自己的判断(也就是卡尔曼增益),综合了他们的信息,给出了一个你认为最准确的位置估计。

总结

卡尔曼滤波是一种强大的数学工具,它通过结合系统的预测和观测数据,实现了对动态系统状态的精确估计。其高效性和鲁棒性使得它在众多领域得到了广泛应用。随着技术的不断发展,卡尔曼滤波及其扩展形式(如无迹卡尔曼滤波、粒子滤波等)将继续在各个领域发挥重要作用。

标签:预测,Kalman,卡尔曼滤波,噪声,观测,Filter,协方差,时刻
From: https://blog.csdn.net/mieshizhishou/article/details/142552668

相关文章

  • Linux防火墙-filter表
    作者介绍:简历上没有一个精通的运维工程师。希望大家多多关注作者,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。我们经过上小章节讲了Linux的部分进阶命令,我们接下来一章节来讲讲Linux防火墙。由于目前以云服务器为主,而云服务器基本上就不会使用系统自带的防火墙......
  • 什么是启发式过滤(Heuristic Filtering)?
    定义启发式过滤是一种技术方法,利用解决问题的技术和算法来识别数据中的模式、趋势或特征。这种方法通常涉及使用预测分析和近似方法,以便快速做出决策或对信息进行分类。启发式过滤通常应用于反垃圾邮件软件、防病毒程序和人工智能等领域,以有效检测垃圾邮件、恶意软件或......
  • OpenCV_自定义线性滤波(filter2D)应用详解
    OpenCVfilter2D将图像与内核进行卷积,将任意线性滤波器应用于图像。支持就地操作。当孔径部分位于图像之外时,该函数根据指定的边界模式插值异常像素值。卷积核本质上是一个固定大小的系数数组,数组中的某个元素被作为锚点(一般是数组的中心)。上面讲了线性滤波的实质就是计算相......
  • css使用上中下三种图设置背景图,上下两张高度位置固定,中间拉伸(background-size、backg
    注意:此处计算需要使用calc,less的减法是在编译阶段不满足此处需求上下两张图高度为5px,位置紧贴上下边缘,中间背景图根据高度拉伸,并且增加模糊度background:url('./images/top.png')no-repeat,/*顶部图片*/url('./images/bottom.png')no-repeat,/*底部图片*/u......
  • Filter 过滤器和 Listener 监听器
    2、开发步骤3、过滤器执行流程4、过滤器生命周期5、过滤器配置问题6、过滤器链(配置多个过滤器)二、Listener监听器1、ServletContextListener接口2、开发步骤一、Filter过滤器============1、概述当访问服务器资源时,Filter过滤器可以将请求拦截下来,完成一些特殊的......
  • 基于UKF(无迹卡尔曼滤波)的SINS/GPS集成导航仿真程序【需要PSINS工具箱支持】
    文章目录主要特点内容包括运行截图基于UKF(无迹卡尔曼滤波)的SINS/GPS集成导航仿真程序(需要基于PSINS工具箱,工具箱是开源的,如果需要,可以确认收货后找我要链接)。该程序能够高效地模拟导航数据,并提供详细的滤波结果及误差分析,适用于科研和工程项目。带详细的中文注释主要......
  • 如何在 ASP.NET Core Web API 方法执行前后 “偷偷“ 作一些 “坏“ 事?初识 ActionFil
    前言:什么是ActionFilterAttribute?ActionFilterAttribute是一种作用于控制器Action方法的特性(Attribute),通过它,你可以在操作执行前后、异常处理时等不同的阶段插入自定义逻辑。比如在执行操作方法之前修改请求参数、记录日志、进行权限验证等操作,在执行操作方法之后发送邮件......
  • 过滤器Filter 与 拦截器Interceptor
    1.Filter过滤器1.1什么是Filter?Filter表示过滤器,是JavaWeb三大组件(Servlet、Filter、Listener)之一。过滤器可以把对资源的请求拦截下来,从而实现一些特殊的功能使用了过滤器之后,要想访问web服务器上的资源,必须先经过滤器,过滤器处理完毕之后,才可以访问对应的资源。......
  • 完美解决 Array 方法 (map/filter/reduce) 不按预期工作 的正确解决方法,亲测有效!!!
    完美解决Array方法(map/filter/reduce)不按预期工作的正确解决方法,亲测有效!!!亲测有效完美解决Array方法(map/filter/reduce)不按预期工作的正确解决方法,亲测有效!!!报错问题可能出现的原因解决思路解决方法1.确保回调函数正确返回值2.检查数组的数据类型3.使......
  • 文件包含_PHP filter伪协议利用方式
    前言本文主要讲解phpfilter伪协议,文件包含漏洞php://filter伪协议是PHP中独有的一种协议,它是一种过滤器,可以作为一个中间流来过滤其他的数据流。通常使用该协议来读取或者写入部分数据,且在读取和写入之前对数据进行一些过滤,例如base64编码处理、rot13处理等。php://filter伪协......