矩阵是一个按行列排列的矩形数组,用大写粗体字母表示。一个 m×n 矩阵有 m 行、n 列:
A=a11a21⋮am1a12a22⋮am2……⋱…a1na2n⋮amn
其中 aij 表示第 i 行第 j 列的元素。
矩阵可以看作多个列向量或行向量的组合。例如:
A=[a1a2…an]
其中每个 aj 是矩阵的第 j 列的元素。
B=b1b2⋮bn
其中每个 bi 是矩阵的第 i 行的元素。
零矩阵:所有元素都为 0 的矩阵,记作 O 或 0:
O2×2=[0000]
单位矩阵:对角线为 1、其余为 0 的方阵,记作 I:
I2=[1001],I3=100010001
单位矩阵在矩阵乘法中相当于"1",任何矩阵乘以单位矩阵仍为自身。
1. 矩阵加减与数乘
加法与减法
同型矩阵(行数、列数相同)按对应元素相加减:
[a11a21a12a22]±[b11b21b12b22]=[a11±b11a21±b21a12±b12a22±b22]
数乘
标量与矩阵每个元素相乘:
k⋅[a11a21a12a22]=[k⋅a11k⋅a21k⋅a12k⋅a22]
2. 矩阵乘法
m×n 矩阵 A 与 n×p 矩阵 B 相乘,得到 m×p 矩阵 C=AB,其中:
cij=k=1∑naik⋅bkj
即 C 的第 i 行第 j 列元素等于 A 的第 i 行与 B 的第 j 列逐元素相乘再求和。
二维示例:
[a11a21a12a22][b11b21b12b22]=[a11b11+a12b21a21b11+a22b21a11b12+a12b22a21b12+a22b22]
- 矩阵乘法不满足交换律:一般 AB=BA
- 满足结合律:(AB)C=A(BC)
- 满足分配律:A(B+C)=AB+AC,(A+B)C=AC+BC
3. 转置
将矩阵的行列互换,记作 AT:
A=a11a21a31a12a22a32⇒AT=[a11a12a21a22a31a32]
- (AT)T=A:两次转置还原
- (A+B)T=AT+BT:和的转置等于转置的和
- (kA)T=kAT:数乘后转置等于转置后数乘
- (AB)T=BTAT:乘积的转置等于反向转置的乘积
4. 逆矩阵
方阵 A 的逆矩阵 A−1 满足:
AA−1=A−1A=I
仅当 det(A)=0(满秩)时逆矩阵存在。
- (A−1)−1=A:两次求逆还原
- (AB)−1=B−1A−1:乘积的逆等于反向逆的乘积
- (AT)−1=(A−1)T:转置的逆等于逆的转置
- (kA)−1=k1A−1(k=0)
二维矩阵的逆公式:
[acbd]−1=ad−bc1[d−c−ba]
其中分母 ad−bc 就是该矩阵的行列式。
对于高维矩阵,逆矩阵没有简单的公式,通用方法是高斯消元法(Gauss-Jordan elimination)。
核心思路:构造增广矩阵 [A∣I],通过初等行变换将左边化为单位矩阵,右边即得到 A−1:
[A∣I]行变换[I∣A−1]以 3×3 矩阵为例:
a11a21a31a12a22a32a13a23a33100010001消元100010001b11b21b31b12b22b32b13b23b33此时右边矩阵 B=(bij) 就是 A−1。
三种初等行变换:
- 交换两行
- 某行乘以非零标量
- 某行加上另一行的倍数
消元步骤:先从上到下将左矩阵化为上三角(前向消元),再从下到上化为单位矩阵(后向消元)。每步同时操作右边矩阵。
5. 秩(Rank)
矩阵的秩 rank(A) 是其线性无关的列(或行)的最大个数,即列空间(或行空间)的维数。
rank(A)=dim(colspace(A))=dim(rowspace(A))
对于 m×n 矩阵,rank(A)≤min(m,n)。
满秩:方阵的秩等于其阶数,即 rank(A)=n。此时矩阵可逆(det(A)=0),各列向量线性无关。
降秩:rank(A)<n,矩阵不可逆(det(A)=0),列向量线性相关。降秩变换会将空间"压缩"到更低的维度。
- 秩告诉你矩阵代表的变换保留了输入空间的多少个维度
- 满秩 3×3 矩阵将整个 3D 空间映射到完整的 3D 空间
- 秩为 2 的 3×3 矩阵会将所有点映射到某个平面上
- 矩阵乘以向量 Av 的结果总是在 rank(A) 维的空间内
6. 迹(Trace)
矩阵的迹 tr(A) 是其主对角线元素之和(仅方阵有迹):
tr(A)=i=1∑naii
例如:
tr(acbd)=a+d
- tr(A+B)=tr(A)+tr(B)
- tr(kA)=k⋅tr(A)
- tr(AB)=tr(BA):交换律虽然对矩阵乘法不成立,但迹相等
- tr(A)=∑λi:迹等于所有特征值之和
7. 正交矩阵
满足 AT=A−1(即 ATA=I)的方阵称作正交矩阵。
8. 行列视角
矩阵与向量的乘法可以从列或行的角度来理解。
8.1 列视角:右乘列向量
设 A 为 m×n 矩阵,将其按列拆分:
A=[a1a2…an]
其中每个 aj 是 m 维列向量。右乘一个 n 维列向量 x=(x1,x2,…,xn)T:
Ax=[a1a2…an]x1x2⋮xn=x1a1+x2a2+⋯+xnan
即 Ax 是 A 的各列以 xj 为权重的线性组合。
右乘列向量在图形学中无处不在:
- 模型变换:Mv 中,矩阵 M 的列就是变换后的基向量。例如二维旋转矩阵 R=[cosθsinθ−sinθcosθ] 的第一列是旋转后的 x 轴方向,第二列是旋转后的 y 轴方向。
- MVP 变换:P⋅V⋅M⋅v 中,每一步都是将向量 v 表达为当前矩阵列向量的线性组合。
- 坐标转换:从局部坐标变换到世界坐标,本质上就是把顶点坐标作为权重,对模型的三个轴向量做线性组合。
8.2 行视角:左乘行向量
将 A 按行拆分:
A=b1b2⋮bm
其中每个 bi 是 n 维行向量。左乘一个 m 维行向量 y=(y1,y2,…,ym):
yA=[y1y2…ym]b1b2⋮bm=y1b1+y2b2+⋯+ymbm
即 yA 是 A 的各行以 yi 为权重的线性组合。
- 行变换与消元:高斯消元法中的初等行变换(某行乘以标量、某行加上另一行的倍数),本质就是对矩阵的行做线性组合。
- 双线性形式:uAv 中,可以先将 uA 看作行的线性组合,再与 v 做内积。
- 法线变换:法线需要乘以逆转置矩阵 (M−1)T,若以行向量左乘,形式更自然。
8.3 两种视角的统一
右乘列向量和左乘行向量是对同一个线性变换的两种解读:
- 右乘:用列向量的分量控制列空间的组合 → 回答"输出向量落在哪些方向?"
- 左乘:用行向量的分量控制行空间的组合 → 回答"输入向量的哪些维度被加权?"
结合使用两种视角,可以更灵活地理解和推导矩阵变换公式。
9. 特征值与特征向量
对于 n×n 方阵 A,若存在非零向量 v 和标量 λ 满足:
Av=λv则称 λ 为 A 的特征值(eigenvalue),v 为对应的特征向量(eigenvector)。
从几何上看,矩阵 A 作用在特征向量 v 上,只是将其拉伸或压缩(乘 λ),不改变方向。这意味着特征向量是变换 A 的"主轴方向",特征值是该方向的缩放因子。
求解方法
将定义式移项:
(A−λI)v=0
要使非零解存在,(A−λI) 必须是奇异矩阵,即:
det(A−λI)=0
这个方程称为特征方程,左边是关于 λ 的 n 次多项式。
以 2×2 矩阵为例:
A=[acbd]⇒det(a−λcbd−λ)=(a−λ)(d−λ)−bc=0
解出 λ1,λ2 后,分别代回 (A−λI)v=0 即可求出对应的特征向量。
- tr(A)=∑i=1nλi:迹等于所有特征值之和
- det(A)=∏i=1nλi:行列式等于所有特征值之积
- 若 λ 是 A 的特征值,则 λk 是 Ak 的特征值
- 若 A 可逆,则 1/λ 是 A−1 的特征值
- 实对称矩阵(A=AT)的特征值全是实数,且不同特征值对应的特征向量正交
- 主轴与包围盒:对模型顶点坐标计算协方差矩阵,其特征向量就是点云的三个主轴方向,用于生成 OBB(有向包围盒)。
- 惯量张量:物理模拟中刚体的转动惯量是一个 3×3 矩阵,特征向量是惯量主轴,绕主轴旋转最稳定。
- 法线变换:当模型做了非均匀缩放后,法线需要乘逆转置矩阵 (M−1)T——这本质上是利用特征分解在法线方向做矫正。
- 谱分解:实对称矩阵可以分解为 A=λ1v1v1T+⋯+λnvnvnT,将矩阵拆成各主轴方向独立贡献的和。