正交矩阵:像“刚体旋转”一样的矩阵
想象一下,你手里有一个刚性的物体,比如一个硬纸板做的三角板。你可以旋转它、翻转它,但不能拉伸或压扁它——形状和大小始终不变。在线性代数里,正交矩阵(Orthogonal Matrix)就是扮演这个“刚性变换”角色的矩阵。它只负责旋转或反射向量,不会改变向量的长度或它们之间的角度。
先从基础说起:什么是“正交”?
“正交”就是“垂直”的意思。如果两个向量互相垂直(点积为0),它们就是正交的。如果它们的长度还都是1,就叫单位正交(orthonormal)。
正交矩阵的核心特点是:它的列向量(或行向量)互相正交,而且每个都是单位长度。这就像一个坐标系的新基底:每个轴都垂直,且长度一致。
这张图给了 4 个例子 (a)(b)(c)(d),它们都是**正交矩阵(orthogonal matrix)**的典型长相:有的像“交换坐标轴/翻转方向”,有的像“旋转”,有的列里是各种分数,但本质都在做同一件事——保持长度和角度不变的线性变换。
1) 什么是正交矩阵
对一个实矩阵 Q,如果满足
就称 Q 是正交矩阵。
这句话有两个最重要的“直观版本”:
版本 A:列向量(或行向量)是“正交单位基”
把 Q 的三列写成 q1,q2,q3(二维就两列):
单位长度:
两两垂直:
也就是“每一列都是单位向量,列与列互相垂直”。(行向量同理。)
版本 B:它保持“内积”
对任意向量 x,y:
于是立刻得到:
长度不变:
角度不变:夹角保持(因为夹角由内积决定)
2) 图里的四个矩阵分别在“说”什么
(d) 最经典:二维旋转矩阵
第一列 (cosx,sinx) 是单位向量;
第二列 (−sinx,cosx) 也是单位向量;
两列点积:cosx(−sinx)+sinx(cosx)=0
所以。它表示绕原点旋转 x 角度(纯旋转,det=+1)。
(a) “换轴 + 翻转”的整系数版本
看列向量更直观:
第1列 (1,0,0)
第2列 (0,0,−1)
第3列 (0,1,0)
它们都是标准基向量 e1,e2,e3 的“重排/加负号”,天然就互相垂直且长度为 1。
这种矩阵叫符号置换矩阵(signed permutation matrix):表示“把坐标轴交换一下,再可能翻转某些轴”。
(b) 分数看着复杂,但仍是“正交单位列”
你可以快速检查列向量:
第2列是 (0,0,−1),单位长度没问题;
第1列长度:
第3列长度:
第1列和第3列点积:
再加上它们与第2列点积也为 0(因为第2列只有第三个分量),所以它是正交矩阵。
直观上:像是“在 xy 平面里做某个旋转/反射,同时把 z 轴翻转”。
(c) 更“学术范儿”:正交归一化后的列
这里每一列都被精心“归一化”(分母就是为了让长度变成 1),并且列与列互相点积为 0。
这种矩阵经常来自:把一组向量做 Gram–Schmidt 正交化,得到一组正交单位基,拼成矩阵 Q。
3) 正交矩阵的三个“秒记性质”
逆等于转置
保持长度与角度(不拉伸不剪切)
行列式只能是 ±1
det(Q)=+1:纯旋转(方向保持)
det(Q)=−1:包含镜像/翻转(方向反转)
我们就把图里的(c)这个矩阵当成 Q,用“列向量法”把它一步步验明正身:它为什么是正交矩阵。
(c)
1) 正交矩阵的判定:![]()
最直观的等价说法是:
Q 的每一列都是单位向量,并且列与列两两垂直。
把三列分别记为 c1,c2,c3。
2) 先验“单位长度”:![]()
c1 的长度
c2 的长度
c3 的长度
所以三列都是单位向量。
3) 再验“两两垂直”:ci⋅cj=0
c1⋅c2
c1⋅c3
c2⋅c3
所以三列两两正交。
4) 结论:它就是正交矩阵
“单位 + 互相垂直”意味着
因此(c) 是正交矩阵,并且立刻得到一个超实用性质:
5) 它在几何上做了什么?
正交矩阵表示一种“不变形”的线性变换:
不改变长度:
不改变角度:夹角保持
只可能是旋转或旋转+镜像(反射)
对这个 (c),因为它的列向量构成右手系(等价于 det(Q)=+1),它属于“纯旋转”(proper orthogonal)。
我们把 (c) 再“讲活一点”:它到底在几何上干了什么、为什么一定保持长度/角度、以及怎么用它做坐标变换。
1) 把 (c) 看成“新坐标轴”
对正交矩阵 Q,第 1、2、3 列分别就是变换后新的三根坐标轴(单位向量):
新的 x′ 轴方向:c1
新的 y′ 轴方向:c2
新的 z′ 轴方向:c3
而且它们两两垂直、长度为 1,所以这是一个“正交坐标系”。
在 (c) 里:
直观解读:
c1 指向“(1,1,2)”那个斜上方方向(z 分量最大),像把 x 轴抬起来了。
c2 没有 x 分量(第一项是 0),完全在yz 平面里,偏向 “y 负、z 正”。
c3 x 分量很大(5),所以它更“靠近 x 轴”,但又带一点 y、z 的负方向。
2) Qx 为什么是“旋转/刚体运动”?
取任意向量 x。变换后变成 Qx。
关键在这句(我们用你刚才验证过的):
所以:
长度不变(不拉伸)
也就不可能发生“剪切变形”
只剩下“转一转 / 翻一翻”
同理,两向量夹角也保持,因为内积保持:
我们把这串式子拆成“每一步在做什么”,你就会发现它其实只是在把“长度的平方 = 自己点自己”这句话,用矩阵语言写出来而已。
(2.1) 先统一一个最关键的定义:长度平方 = 点积
对任意向量:
而点积在矩阵写法里就是:
为什么?
因为是 1×n1,v 是 n×1,乘起来得到一个 1×1 的数,展开就是
这正是长度平方。
(2.2) 第一步:![]()
这一步只是把上面的“长度平方公式”套到向量 Qx 上:
x 是原向量
Qx 是变换后的向量
所以它的长度平方就是
到这里没用任何“正交”,只用“长度平方=转置乘自己”。
(2.3) 第二步:![]()
这是一个矩阵转置的基本规则:
顺序会反过来(像“反着读”)。
把 A=Q,B=x(注意 x 也可以看成矩阵 n×1):
(2.4) 第三步:![]()
把第2步代回去:
接下来用矩阵乘法的结合律(只要尺寸匹配就可以重新加括号):
这一点你可以理解为:
中间的
和 Q 先“凑一块”乘起来,形成一个新矩阵
。
(2.5) 第四步:如果 Q 是正交矩阵,则![]()
这是“正交矩阵”的定义(之一):
代入上式:
(2.6) 第五步:![]()
因为单位矩阵不改变向量:
所以:
一句话总结这串式子
它表达的是:
正交矩阵 Q 不改变向量长度(因此也不改变角度)。
(2.7) 给你一个“带数字”的最小例子(2D旋转)
取
这是旋转 90° 的正交矩阵。
先算:
取向量,
。
变换后:
它的长度:
而
完全一样。
(2.8) 这串式子里“最容易卡住”的点
为什么长度平方等于
因为展开就是。
为什么
因为。
为什么能把括号换成
因为矩阵乘法满足结合律:。
3) 用 (c) 做一次“看得见”的坐标变换例子
例子 A:把标准基向量送过去(最直观)
Qe1 就等于第 1 列c1
Qe2 就等于第 2 列c2
Qe3 就等于第 3 列c3
这说明:原来的三根坐标轴被转到了这三根新轴上。
例子 B:把一个一般向量拆成“列的线性组合”
对任意:
这句话非常“几何”:
你给我一组系数 (x1,x2,x3),我就按这三个新轴方向 c1,c2,c3 去合成一个向量。
所以 Q 就像“把原来的坐标系换成了一个旋转后的正交坐标系”。
4)
的意义:反过来投影回去(坐标读取)
因为,所以:
Q:把“在旧坐标系里的坐标”变成“在新方向组合出来的向量”
:把一个向量投影到这三根新轴上,得到它在新轴下的坐标
更具体:
设空间里一个向量是 v。它在新坐标系 (c1,c2,c3) 下的坐标就是:
因为的第 1 行就是
,乘出来就是点积。
一句话:
就是“用新轴去量一量(点积)”,量出在新轴方向上的分量。
5) (c) 为什么看起来“分母很怪”?
因为它其实来自“把整数向量正交归一化”:
(1,1,2) 的长度是
,所以除以
才变单位向量 → 于是出现
。
(0,−2,1) 长度是
→ 出现
。
(5,−1,−2) 长度是
→ 出现
。
这些根号不是玄学,是“为了让长度=1”硬算出来的。
6) 小结:你看到 (c) 时,一眼该想到什么?
看到这种“每列都像整数向量”的矩阵,基本就该联想到:
它很可能是正交矩阵;
它在几何上是“换了一组垂直、单位的新坐标轴”;
它只做旋转/反射,不会拉伸;
求逆根本不用解方程:直接转置。
在真实世界的数据矩阵中,不可能都满足正交,那正交矩阵在什么情况下能用呢?
确实,真实数据矩阵 A(图像、表格、特征矩阵、模型权重……)一般既不方阵、也不可能刚好满足。但正交矩阵之所以常用,关键不在于“数据本身是正交的”,而在于:
我们经常把复杂矩阵分解成“正交部分 + 其他部分”,用正交部分来做不失真的旋转/换基,把问题变简单、数值更稳定。
下面按最常见的场景说。
1) 作为“旋转/换坐标系”的工具(换基)
在数据分析里,很多操作等价于:把数据从原坐标系换到一个更合适的坐标系。
PCA:找一组新的正交轴(主成分方向),把数据投影过去
这里 V 的列就是主成分方向,V 是正交矩阵(或正交列矩阵)。
好处:新坐标轴互相不干扰(不相关)、解释方差清晰。白化/去相关:先用正交变换把相关性“旋开”,再做尺度归一。
直觉:正交矩阵像“转动坐标轴”,不会改变点与点的距离结构,所以你可以放心地转。
2) SVD/特征分解里,正交矩阵天然出现
任何矩阵 A(哪怕是长方形)都有 SVD:
U、V 是正交矩阵(或列正交:
)
Σ 才负责“拉伸”
所以你可以把任意线性变换理解成:
先旋转(
)→ 再按主方向拉伸(Σ)→ 再旋转(U)
应用非常多:
降维/压缩(保留前 k 个奇异值)
去噪(丢掉小奇异值)
最小二乘(数值更稳)
3) 最小二乘里用 QR 分解:解方程更稳
做线性回归:。
通常用QR 分解:
A=QR
Q 的列正交(正交矩阵/半正交矩阵)
R 上三角
因为 Q 不会放大误差(保持长度),所以比直接解正规方程更稳定。
4) 机器学习里:用正交性来“保持尺度、稳定训练”
很多训练不稳定,本质是“信号被放大/缩小/扭曲”。正交矩阵能尽量避免这个问题。
典型用法:
正交初始化(RNN/Transformer/深层网络常见):让梯度不那么容易爆炸/消失(至少在一开始更稳)。
正交约束/正则化:希望某层权重近似正交,让特征更“互不重复”、训练更平滑。
特征正交化:让不同特征方向尽量独立,减少共线性。
5) 信号处理/通信:能量守恒的变换
很多变换矩阵是正交/酉(复数情形):
DFT/FFT(严格来说是“酉矩阵”)
DCT(JPEG 压缩核心)
Walsh-Hadamard 变换
它们的共同点:变换前后能量(ℓ2\ell_2ℓ2 范数)守恒,便于压缩、滤波、去噪。
6) 计算几何/机器人/3D:姿态与旋转就是正交矩阵
3D 旋转矩阵 R 满足:
所以在:
SLAM、机器人姿态估计
相机外参/坐标系变换
3D 引擎、刚体运动
正交矩阵是“物理上正确”的旋转表示(不会把物体拉长)。
7) 总结一句话:正交矩阵什么时候用?
当你需要下面任意一件事时,就会用到正交矩阵(或“近似正交”):
换坐标系但不想改变距离/角度(旋转、投影)
把矩阵分解成稳定的几何部分(SVD / QR / EVD)
想要数值稳定(不放大误差、保持尺度)
想让特征方向“互不干扰”(PCA、正交约束)