数学地基:矩阵、概率与协方差¶
一篇会成长的笔记。这里攒惯导解算用到的数学/概率地基:先是矩阵与协方差矩阵,将来期望、方差、概率密度、泰勒展开、四元数等都并进这一篇(届时按内容改名,比如"概率与统计基础")。 每节末尾有外链 Wiki,方便随手回去补课。
核心要点¶
- 矩阵 = 排成行×列的数表 + "整体参与运算"的规则,用来紧凑表示变换和多因多果关系。
- 协方差矩阵 = 把多维随机向量各分量两两的线性相关程度统一装进一个矩阵;对角元是方差,非对角元是协方差。
- 惯导里最常见的三种矩阵:旋转矩阵(姿态)、雅可比矩阵(误差传播)、协方差矩阵(不确定性 \(P\))。
一、什么是矩阵¶
一句话:矩阵就是把一堆数按"行 × 列"排成的一张数表,并规定了"整体参与运算"的规则。
记号:\(A\) 是 \(m\) 行 \(n\) 列的矩阵,记 \(A\in\mathbb{R}^{m\times n}\),元素用双下标 \(a_{ij}\) 表示第 \(i\) 行第 \(j\) 列。
相邻概念
| 概念 | 说明 |
|---|---|
| 向量 | 只有 1 列(或 1 行)的矩阵,\(n\times 1\) 列向量 |
| 方阵 | 行数 = 列数,如旋转矩阵、协方差矩阵 |
| 单位阵 \(I\) | 对角全 1、其余全 0,作用相当于数字里的"1" |
| 转置 \(A^T\) | 行与列互换,\((A^T)_{ij}=a_{ji}\) |
| 对称阵 | \(A=A^T\),协方差矩阵就是对称阵 |
矩阵能干嘛(三个直觉)
- 表示线性变换 / 旋转:旋转矩阵 \(R\) 左乘向量,把向量转到新姿态,\(v' = R\,v\)。惯导的姿态就是用旋转矩阵(或四元数)保存的。
- 表示多因多果:一次矩阵乘法同时算出所有组合——这正是协方差矩阵存在的意义:一个 \(n\times n\) 矩阵一口气记录任意两分量间的相关程度。
- 表示误差传播:一阶线性化时 \(\delta y = J\,\delta x\),\(J\) 是雅可比矩阵;多个误差源的协方差 \(P\) 通过 \(JPJ^T\) 传播——这是卡尔曼 / ESKF 预测步的底层逻辑。
矩阵"好用"在于:它把一组同时成立的线性关系写成一个式子,推导和信息密度都高得多。
展开:为什么"一堆数字"能表示旋转?(上面第 1 条)¶
这是初学矩阵时最卡人的一步。三步拆开,全程只有加减乘:
- 矩阵乘向量只有一种算法:记 \(R\) 的两个列向量为 \(c_1,\ c_2\),向量 \(v=[a,b]^T\),则 \(R\,v = a\,c_1 + b\,c_2\) —— 即"拿向量的分量去给矩阵的列当权重,然后加起来"。纯算术,零几何。
- 所以列 = 基向量的新地址:把 \(e_1=[1,0]^T\) 喂进去,套上面那句定义,结果正好是第 1 列;同理第 2 列就是 \(e_2\) 的落点。矩阵的列不是数字排列,是基向量搬家后的新地址。
- 先定落点,矩阵自己长出来:想转 \(\theta\),只需问 \(e_1\)、\(e_2\) 各去哪 → 分别是 \((\cos\theta,\ \sin\theta)\) 与 \((-\sin\theta,\ \cos\theta)\) → 两列并起来就是
这张图是主动旋转(向量转、坐标系不动)
惯导里的坐标变换(\(C_b^n\)、\(C_n^b\))多用被动旋转(坐标系转、向量不动),其矩阵是上式的转置: \(\begin{bmatrix}\cos\theta & \sin\theta\\ -\sin\theta & \cos\theta\end{bmatrix}\)。
两者不是谁错,是同一件事的两种说法。"列 = 新地址"这个读法两边都成立,只是含义不同:主动看"旧轴被搬到哪",被动看"旧轴在新系里怎么读"。 详见 坐标变换与旋转矩阵 · 0.4b 岔路口。
最该转过来的一个观念
矩阵里没有任何"旋转的动作",它是一张照片 —— 转完之后,坐标轴长什么样。
教材常把"动作"和"结果"混着讲,这才是"凭什么一堆数字就能旋转"这个困惑的根源。正确顺序是反的:先规定基向量搬到哪儿,矩阵自己就长出来了。矩阵不是被"赋予"了旋转含义,而是你用两个落点把它填满之后,它自然就只能干旋转这一件事。
怎么确认它真的只是旋转? 列是单位长且互相垂直 ⇒ 这个矩阵只能做两件事:旋转(\(\det=+1\))或镜像(\(\det=-1\))。这里 \(\det R=\cos^2\theta+\sin^2\theta=1>0\),所以是旋转,不是翻面。同样可验证 \(|Rv|=|v|\)(长度不变 ⇒ 没有拉伸)。
👉 完整推导见 坐标变换与旋转矩阵 · 第零节;可拖动的演示见 旋转矩阵三步推导 · 交互演示
二、协方差矩阵¶
一句话:一个把多维随机向量各分量两两之间的线性相关程度统一装起来的矩阵。
对随机向量 \(X=(X_1,\dots,X_n)^T\),均值 \(\mu=E[X]\),协方差矩阵定义为:
- \(i=j\):\(\Sigma_{ii}=\operatorname{Var}(X_i)\ge 0\)(方差)
- \(i\ne j\):两分量协方差,反映"一起变"的线性倾向
二维例子
\(\rho\in[-1,1]\) 是相关系数。协方差矩阵的半正定二次型 \(x^T\Sigma^{-1}x=\text{const}\) 画出来是一个误差椭圆——长轴就是不确定度最大的方向,这正是二维正态分布等高线的形状。
三个关键认知
- 不以线代全:协方差只描述线性关系。\(\operatorname{Cov}=0\) 不代表独立(如 \(X_1\) 与 \(X_1^2\) 协方差常为 0,却显然不独立)。
- 对称半正定:\(\Sigma=\Sigma^T\),且 \(a^T\Sigma a = \operatorname{Var}(a^TX)\ge 0\)。
- 在惯导里的角色:ESKF 里状态误差 \(\delta x\) 的协方差 \(P=E[\delta x\,\delta x^T]\) 正是此定义——记录陀螺/加计误差积分放大后的姿态-速度-位置不确定性,也是卡尔曼增益的输入。
正负号 / 大小 / 单位 → 相关系数(对应下面交互实验)
- 协方差 > 0(正相关):身高越高、体重往往越重(同增同减)。
- 协方差 < 0(负相关):年龄越大、身体柔韧性往往越差(此消彼长)。
- 协方差 = 0(无线性关系):例如身高和今天心情,彼此不影响。
- 绝对值大小代表"联动强度",但它受单位影响(身高用米和厘米算出的值差很多),所以后来才归一化出取值范围在 \([-1,1]\) 的相关系数 \(ρ\),跨变量可比。
三、实例演示:身高与体重(构建期 Python 实算)¶
真实算出来的结果(构建期 Python 实算,样本 12 组)¶
样本数据(身高 cm, 体重 kg):(158, 48), (162, 52), (165, 55), (168, 58), (170, 62), (172, 64), (175, 68), (178, 72), (180, 75), (183, 79), (186, 82), (190, 88)。
| 统计量 | 数值 | 含义 |
|---|---|---|
| 平均身高 | 173.92 cm | \(E[X_1]\) |
| 平均体重 | 66.92 kg | \(E[X_2]\) |
| 身高方差 | 97.36 | \(\operatorname{Var}(X_1)\) |
| 体重方差 | 158.63 | \(\operatorname{Var}(X_2)\) |
| 身高标准差 | 9.87 | \(\sqrt{\operatorname{Var}(X_1)}\) |
| 体重标准差 | 12.59 | \(\sqrt{\operatorname{Var}(X_2)}\) |
| 协方差 \(\Sigma_{12}\) | 124.08 | \(\operatorname{Cov}(X_1,X_2)\) |
| 相关系数 \(\rho\) | 1.00 | \(\Sigma_{12}/(\sigma_1\sigma_2)\),取值 [-1,1] |
因为 协方差 \(>0\),且相关系数 \(\rho \approx 0.99\)(接近 +1),说明身高与体重强正相关:「身高越高,体重往往越重」——和直觉一致。而且这次是真实数据算出来的,不是一个假设。
下面是散点图:
注意:协方差受单位影响(若身高用米、体重用千克,数值会不同);所以跨变量比较时用归一化后的相关系数 \(\rho\)。
想要动手拖动看实时变化,去 协方差交互实验 拖几个点试试。
关联¶
- 系列内:惯性导航系列首页
- 动手玩:协方差交互实验
- 下一篇计划:期望·方差·概率密度(并入本篇)→ 泰勒展开 → 四元数/旋转矩阵 → 卡尔曼/ESKF
- 同项目:AHRS 板固件仿真与验证
外链 Wiki¶
- 旋转矩阵三步推导 · 交互演示 —— 「凭什么一堆数字能代表旋转」的可拖动演示(本文第一节配套)
- 矩阵 — 维基百科
- 线性代数 — 维基百科
- 协方差矩阵 — 维基百科
- 协方差 — 维基百科
- 卡尔曼滤波 — 维基百科