第四章:卡尔曼滤波数学基础

各位同学,欢迎来到第四章。这一章咱们不写代码,不调参数,就专心啃数学基础。

我知道,一提到数学,很多人就开始头疼。但请相信我,卡尔曼滤波的数学,其实没那么可怕。说白了,它就是一套用矩阵和概率论来“猜”系统状态的方法。

我当年刚入行时,也对着协方差矩阵发过呆。后来在项目里调了三个月电池SOC,才真正理解这些公式背后的物理意义。今天,我就把这些经验掰开揉碎了讲给你听。

4.1 高斯分布:一切不确定性的起点

卡尔曼滤波的核心假设是什么?是“噪声服从高斯分布”。

为什么偏偏是高斯分布?因为它在数学上太好处理了。你想想看,一个高斯分布只需要两个参数:均值μ和方差σ²。均值代表“最可能的值”,方差代表“不确定的程度”。

在电池建模中,我习惯用高斯分布来描述两个东西:

  • 过程噪声:比如电流传感器的测量误差,或者模型本身的近似误差
  • 观测噪声:比如电压传感器的读数波动

举个例子。假设我们测量一节电池的端电压,读数是3.7V,但传感器精度是±0.05V。那么我们可以说:

  • μ = 3.7V(最可能的真实电压)
  • σ = 0.05V(不确定性的标准差)

嗯,这里要注意:高斯分布假设误差是对称的、单峰的。如果你的传感器有系统性偏差(比如总是偏大0.1V),那就不能用高斯分布来建模了。我在项目中遇到过这种情况,后来发现是ADC的参考电压漂了。

核心要点:卡尔曼滤波假设所有噪声都是零均值的高斯白噪声。如果你的噪声不满足这个条件,滤波效果会大打折扣。

4.2 协方差:变量之间的“暧昧关系”

单个变量用方差描述不确定性。那多个变量呢?比如电池的SOC和端电压,它们之间是有关系的——SOC高时电压通常也高。这种关系,就用协方差来描述。

协方差矩阵长这样:

P = [σ₁²   σ₁₂ ]
    [σ₂₁   σ₂² ]

其中:

  • 对角线元素:各变量自身的方差
  • 非对角线元素:变量之间的协方差

如果σ₁₂是正数,说明两个变量同向变化;如果是负数,说明反向变化;如果是0,说明它们不相关。

在卡尔曼滤波中,协方差矩阵P是最重要的变量之一。它告诉我们:当前对系统状态的估计有多自信。P越大,说明越不确定;P越小,说明越有把握。

个人经验:我刚开始做电池SOC估计时,把P的初始值设得特别小,结果滤波器收敛极慢。后来才明白,初始时刻我们对状态一无所知,P应该设大一些。一般我会设成单位矩阵乘以一个较大的数,比如100。

4.3 矩阵运算回顾:卡尔曼滤波的“算术”

卡尔曼滤波的每一步,本质上都是矩阵运算。如果你对矩阵乘法、转置、求逆不熟,现在赶紧补一下。我列几个最常用的:

运算 符号 在卡尔曼滤波中的用途
矩阵乘法 A·B 状态预测、协方差更新
矩阵转置 Aᵀ 计算协方差传播
矩阵求逆 A⁻¹ 计算卡尔曼增益
单位矩阵 I 初始化、归一化

举个例子。状态预测公式是:

x̂ₖ⁻ = A·x̂ₖ₋₁ + B·uₖ

这里A是状态转移矩阵,B是控制输入矩阵。说白了,就是用上一时刻的状态和当前的控制输入,来预测当前时刻的状态。

协方差预测公式是:

Pₖ⁻ = A·Pₖ₋₁·Aᵀ + Q

这个公式我当年背了好久。后来才理解:A·Pₖ₋₁·Aᵀ 是把上一时刻的不确定性传播到当前时刻,Q是加上过程噪声带来的新不确定性。

避坑指南:我曾经在代码里把矩阵乘法的顺序搞反了,结果滤波器发散得一塌糊涂。记住:矩阵乘法不满足交换律,A·B ≠ B·A。写代码时一定要检查维度是否匹配。

4.4 贝叶斯估计思想:卡尔曼滤波的灵魂

卡尔曼滤波的本质是什么?是贝叶斯估计的一种特例。

贝叶斯思想的核心就一句话:用先验知识 + 观测数据 → 得到后验估计

在卡尔曼滤波中:

  • 先验:根据模型预测的状态(x̂ₖ⁻)
  • 似然:观测数据与预测值之间的差异(残差)
  • 后验:融合预测和观测后的最优估计(x̂ₖ)

卡尔曼增益K就是用来做这个融合的。它决定了:

  • 如果K很大:更相信观测
  • 如果K很小:更相信预测

为什么会这样?因为K的计算公式里包含了观测噪声协方差R和预测协方差Pₖ⁻。R越小(观测越准),K越大;Pₖ⁻越小(预测越准),K越小。

我习惯把这个过程想象成一个“信任博弈”:

  • 模型说:SOC应该是60%
  • 传感器说:电压是3.8V,对应SOC是65%
  • 卡尔曼滤波说:我看看谁更靠谱……嗯,模型最近很准,我信模型多一点,最终SOC是61%

核心思想:卡尔曼滤波不是简单地取平均,而是根据不确定性的大小进行加权融合。这就是贝叶斯估计的精髓。

4.5 知识体系总览

下面这张图,是我自己总结的本章知识结构。建议你保存下来,学完后面章节后再回来看,会有更深的理解。

卡尔曼滤波数学基础 高斯分布 • 均值 μ:最可能的值 • 方差 σ²:不确定程度 • 假设:噪声服从零均值高斯分布 • 应用:过程噪声Q、观测噪声R 协方差矩阵 • 对角线:各变量方差 • 非对角线:变量间相关性 • 矩阵P:状态估计的不确定性 • 初始值设大,收敛更快 矩阵运算 • 乘法:状态预测、协方差更新 • 转置:协方差传播计算 • 求逆:卡尔曼增益计算 • 注意:矩阵乘法不满足交换律 贝叶斯估计思想 • 先验:模型预测 x̂ₖ⁻ • 似然:观测与预测的差异 • 后验:融合后的最优估计 x̂ₖ • 卡尔曼增益K:信任权重 四个模块共同构成卡尔曼滤波的数学基础

好了,数学基础就讲到这里。下一章我们会把这些公式变成真正的代码,跑一个完整的卡尔曼滤波流程。到时候你会发现,数学懂了,代码就是水到渠成的事。

课后建议:如果你对矩阵运算不熟,建议花半小时手算一个2×2矩阵的乘法、转置和求逆。我在项目里吃过亏,就是因为矩阵求逆算错了,导致滤波器发散。手算一遍,印象会深很多。


公众号:蓝海资料掘金营,微信deep3321