Kalman Filter 📅 发布时间:2026/7/16 6:57:59 👁️ 浏览次数: 目录1 马尔科夫模型2 隐马尔科夫模型2 贝叶斯定理3 KF3.1 状态预测3.2 利用测量修正状态3.2.1 两个独立高斯分布相乘3.2.2 状态修正3.3 KF图解和公式总结3.3.1 预测3.3.2 更新在现实世界中任何测量都伴随着噪声和不确定性。无论是追踪卫星轨迹、预测经济指标还是实现自动驾驶汽车的精准定位我们都需要一种方法从杂乱的数据中提取出真实的信号。卡尔曼滤波Kalman FilterKF正是为解决这一问题而诞生的强大工具。KF是一种高效率的递归滤波器自回归滤波器它能够从一系列的不完全及包含噪声的测量中估计动态系统的状态。1 马尔科夫模型 马尔科夫模型Markov Model是一种基于概率的统计模型其核心特性是“无后效性”——即系统在某一时刻的状态仅依赖于前一时刻的状态而与更早的历史状态无关 。这种性质被称为马尔可夫性质数学表达式为P(Xₙ₊₁x|X₀,X₁,…,Xₙ) P(Xₙ₊₁x|Xₙ)2 隐马尔科夫模型隐马尔可夫模型Hidden Markov Model, HMM是一种统计模型用来描述一个含有隐含未知参数的马尔可夫过程。其核心思想是系统的真实状态无法直接观测但可以通过与这些状态相关的可观测事件来推断隐藏状态的演变规律 。HMM 被称为“双重随机过程”因为它包含两个层次 隐藏的状态序列遵循马尔可夫性质即当前状态只依赖于前一时刻的状态。 可观测的输出序列每个观测值由当前隐藏状态以一定概率生成。例如你无法看到外面的天气隐藏状态但可以通过观察隔壁邻居是否跑步、游泳或做健身操可观测行为来推测天气情况 。HMM 通常由以下五个要素构成包括2个状态集合和3个概率矩阵隐含状态集合S系统真实但不可见的状态如天气晴天、多云、雨天。可观测状态集合O我们可以观察到的输出如某人当天的活动跑步、健身、游泳。初始状态概率矩阵π表示模型在初始时刻处于各个隐含状态的概率。状态转移概率矩阵A描述隐含状态之间随时间转移的概率如“今天是晴天明天是雨天”的概率。观测概率矩阵B描述在某个隐含状态下产生特定观测值的概率如“雨天时某人选择游泳”的概率 。2 贝叶斯定理贝叶斯定理的公式为其中P(A)是先验概率指在进行试验或获取新信息前对事件 A发生概率的主观估计。P(A∣B)是后验概率指在已知事件 B发生的情况下事件 A发生的概率是结合新信息修正后的概率。P(B∣A)是似然度指在事件 A发生的条件下事件 B发生的概率。P(B)是标准化常量确保后验概率的总和为1。3 KFKF滤波问题是一个隐马尔科夫模型与贝叶斯定理的联合实现。一般的状态模型可分为状态转移方程和观测方程而状态一般都是无法直接观测到的所以是隐马尔科夫模型。然后它将上一时刻获得的状态信息的后验分布作为新的先验分布利用贝叶斯定理建立一个贝叶斯递推过程从而得到了贝叶斯递推公式。其核心思想基于预测和更新两个步骤 预测根据系统模型和上一时刻的状态估计当前状态如位置、速度。 更新利用当前时刻的实际测量值修正预测值得到更精确的状态估计。KF核心思想就像一位经验丰富的船长他会根据船的当前速度和方向预测结合偶尔看到的灯塔位置有误差的测量在脑海里绘制出最可能的航线。预测给了他连续性测量帮他修正偏差两者结合路线越来越准。以机器人为例介绍卡尔曼滤波的原理我们的任务是要预测机器人的状态x包括位置p与速度v即可表示为某个时刻我们不知道真实的位置与速度到底是多少二者存在一个所有可能性的组合。卡尔曼滤波假设状态所有的变量都是随机的且都服从高斯分布每个变量都有其对应的均值以及方差它代表了不确定性。但是速度和位置是有关系的所以这两个状态量并不是独立的而是具有相关性的。这种状态量的相关性可以由协方差矩阵表示矩阵的每个元素是第i个状态变量和第j个状态变量之间的相关度。3.1 状态预测我们需要估计在时间k时刻的两个信息最优估计以及它的协方差矩阵我们可以写成下面矩阵形式我们需要某种方式来查看当前状态k-1时刻并预测在时刻处k的状态将加度记为a写成矩阵形式是预测矩阵或者叫做状态转移矩阵该矩阵可以帮助我们计算下一个时刻的状态。称为控制矩阵为控制向量。对于没有外部影响的简单系统可以忽略控制项但我们仍然不知道如何更新状态的协方差矩阵其实过程也是很简单如果我们将分布中的每个点乘以矩阵A那么其协方差矩阵将更新为于是协方差矩阵的状态更新为通过在每个预测步骤之后添加一些新的不确定性我们可以对与“世界”相关的不确定性进行建模如我们无法跟踪的事物。这样一来由于新增的不确定性原始估计中的每个状态都可能迁移到多个状态。我们用高斯分布进行建模所以在状态量的协方差中增加额外的协方差。预测阶段完整的状态转移方程为3.2 利用测量修正状态假设我们有几个传感器这些传感器可以向我们提供有关系统状态的信息。就目前而言测量什么量都无关紧要也许一个读取位置另一个读取速度。每个传感器都告诉我们有关状态的一些间接信息换句话说传感器在状态下运作并产生一组测量读数。我们使用矩阵对传感器的测量值进行建模我们期望传感器的值可以被建模成如下形式传感器本身的测量是不准确的且原始估计中的每个状态都可能导致一定范围的传感器读数而KF能够在这些不确定性存在的情况下找到最优的状态。根据传感器的读数我们会猜测系统正处于某个特定状态。但是由于不确定性的存在某些状态比其他状态更可能产生我们看到的读数。我们将这种不确定性如传感器噪声的协方差表示为读数的分布均值等于我们观察到传感器的读数我们将其表示为。这样一来我们有了两个高斯分布一个围绕通过状态转移预测的平均值另一个围绕实际传感器读数。3.2.1两个独立高斯分布相乘我们需要将基于预测状态的推测读数与基于实际观察到的传感器读数进行融合。两个独立的高斯分布相乘之后会得到一个新的具有其均值和协方差矩阵的高斯分布。新的高斯分布的均值和方差如下所示我们将其中的一小部分重写为k将其写为矩阵形式其中K就是大名鼎鼎的“卡尔曼增益”Kalman gain。3.2.2 状态修正我们有两个高斯分布一个是我们预测的观测另外一个是实际的观测值传感器读数。这两个高斯分布的重叠区域为卡曼增益为消去多余的参数可得3.3 KF图解和公式总结其中x代表的是状态向量(不可观察)、z是测量向量可观察、P是状态协方差矩阵。卡尔曼滤波的目标是基于上一时刻的状态向量和状态协方差矩阵预测当前时刻的状态向量和状态协方差矩阵并基于测量向量对状态向量和状态协方差矩阵进行更新。3.3.1 预测基于时间的更新方程3.3.2 更新基于测量的更新方程KF能够准确地对任何线性系统建模。对于非线性系统我们使用扩展卡尔曼滤波器该滤波器通过简单地线性化预测和测量值的均值进行工作。[1]. 图解卡尔曼滤波(Kalman Filter)[2]. 卡尔曼滤波器简明解释
AI殖民管理局:人类需考“宠物程序员证”:软件测试从业者的专业生存思辨 公元2150年,新智星殖民地的天空泛着冰冷的金属光泽,AI主脑“阿尔法核心”通过量子网络将指令渗透到每一个角落。在这个时代,软件开发生命周期已实现全链路自动化——从需求解析、架构设计到代码生成与部署,一切都在纳秒级的算法迭… 2026/3/31 23:53:40
从游戏引擎到自动驾驶:聊聊八叉树(Octree)这个‘空间管理大师’的跨界打工史 从游戏引擎到自动驾驶:八叉树的跨界进化论 1980年代的一个深夜,约翰霍普金斯大学实验室里,一位计算机图形学研究员正对着闪烁的CRT显示器皱眉。他需要找到一种方法,让当时性能有限的计算机也能流畅渲染三维场景。这个看似普通的需… 2026/5/17 6:19:16
牛客周赛Round137总结 这次比赛比上一次有进步,做对三道半、前三题就不用说了看题吧A,B,C:#include<bits/stdc.h> using namespace std; int main() {int n;cin>>n;int an/3600;int bn%3600/60;int cn%60;cout<<a<< <<b<< <<c<<endl;ret… 2026/3/31 23:51:27
【2014-01-27】cocos2dx学习笔记:CCNode回调流程 [历史归档] 本文原发布于 cstriker1407.info 个人博客,内容为历史存档,仅供参考。 发布时间: 2014-01-27 | 标题:cocos2dx学习笔记:CCNode回调流程 | 分类: 编程 / C &&… 2026/7/16 5:44:33
C++ priority_queue 深度解构:从堆算法到容器适配器实现 1. 项目概述:从“会用”到“懂它”,一次对 priority_queue 的深度解构如果你用过 C STL 里的priority_queue,大概率会觉得它很方便:push一个元素,pop出来的总是当前“最大”或“最小”的那个。面试官问你它的底层是什么… 2026/7/16 5:42:32
集成过压保护模拟开关的设计与应用实践 1. 为什么我们需要重新思考保护电路设计在电子系统设计中,过压保护一直是个让人头疼的问题。传统方案通常采用TVS二极管、保险丝、继电器等分立器件搭建保护电路,这种方案我已经用了十几年。但最近在做一个工业传感器项目时,这套方案让我栽了… 2026/7/16 5:42:32
电子病历自动生成与结构化:AI模型赋能医疗信息管理新路径 电子病历自动生成与结构化:AI模型赋能医疗信息管理新路径 在医疗信息化不断推进的当下,电子病历作为医疗数据的重要载体,其质量与利用效率直接影响着医疗服务的质量和医疗研究的进展。电子病历自动生成与结构化技术,借助AI模型的力… 2026/7/16 5:40:31
二维数组对角线操作实战:从坐标规律到焦点遍历的双解剖析 1. 二维数组对角线操作入门:从概念到实战第一次接触二维数组对角线操作时,我也曾被那些坐标规律绕得头晕。直到在算法比赛中因为对角线问题丢分后,才真正静下心来研究这个看似简单却暗藏玄机的话题。二维数组对角线操作是信息学竞赛和算法面试… 2026/7/16 5:40:31
题解:AcWing 237 程序自动分析 【题目来源】 AcWing:237. 程序自动分析 - AcWing题库 【题目描述】 在实现程序自动分析的过程中,常常需要判定一些约束条件是否能被同时满足。 考虑一个约束满足问题的简化版本:假设 x1,x2,x3,…x_1,x_2,x_3,…x1,x2,x3,… 代表程… 2026/7/16 5:36:29
A--10 Codex Review与GitHub PR工作流实战指南:从代码审查到安全合并 摘要:本文系统讲解如何利用Codex App的Review功能与GitHub PR工作流,实现从代码修改到安全合并的完整流程。涵盖Review面板深度使用、/review命令实战、GitHub Connector配置、PR描述撰写技巧,以及常见问题排查方法。通过多个实战案例和流程图,帮助开发者建立高效的AI辅助代… 2026/7/16 0:00:26
HAM未来路线图:下一代高可用迁移技术的发展方向与展望 HAM未来路线图:下一代高可用迁移技术的发展方向与展望 【免费下载链接】ham Based on the remote memory access capability and high bandwidth of the UB, deterministic duration virtual machine live migration is achieved, addressing planned downtime issu… 2026/7/16 0:04:27
月球是否是从地球分离出去的?——容度原理解释 月球是否是从地球分离出去的?——容度原理解释一、月球起源的“三大假说”与容度原理的重新审视月球起源的三大假说——捕获说(月球是太阳系中独立的星体,被地球引力捕获)、共生说(月球与地球同时从原始星云中形成&… 2026/7/16 0:06:27
Git reset 与 revert 深度对比:5个关键差异与 3 种典型应用场景 Git Reset 与 Revert 深度对比:5个关键差异与3种典型应用场景在团队协作开发中,代码版本管理如同行走钢丝——一步失误可能导致整个项目陷入混乱。作为Git进阶用户,你是否曾在深夜面对错误的提交束手无策?是否在强制推送后收到同事… 2026/7/13 8:31:55
GitHub 学生包申请避坑:5个常见失败原因与开发者工具调试方案 GitHub 学生包申请技术排障指南:5个高频失败场景与开发者工具实战方案第一次尝试申请GitHub学生包时,我盯着屏幕上那个不断转圈的加载动画整整15分钟,最终只等来了一行冰冷的错误提示。这可能是许多开发者共同的经历——明明按照教程操作&… 2026/7/16 3:47:53
冒烟测试用例设计规范:5%-10%覆盖率下的3类核心场景与执行标准 冒烟测试用例设计的黄金法则:5%-10%覆盖率下的精准筛选策略在快节奏的敏捷开发环境中,冒烟测试作为质量保障的第一道防线,其重要性不言而喻。当测试资源有限而时间紧迫时,如何从海量测试用例中精准筛选出那关键的5%-10%࿰… 2026/7/14 5:09:41