1. 项目概述从“算数”到“空间变换”的思维跃迁很多朋友一听到“线性代数”尤其是“矩阵”第一反应就是一堆数字排成的方阵然后就是各种复杂的计算规则。这感觉就像刚学开车教练只让你背离合、刹车、油门的操作顺序却不告诉你车为什么能动、方向盘转多少轮子会转多少。结果就是公式背得滚瓜烂熟题目也能套着做但一遇到实际问题比如图形旋转、数据降维就完全不知道从何下手感觉学的和用的是两套东西。我自己在很长一段时间里也是这个状态。直到后来做图形处理和机器学习项目被现实问题反复“毒打”之后才被迫回过头去重新理解矩阵。我发现矩阵的加减乘除根本就不是一种新的“算术”而是一套描述空间变换的“语言”。加法是平移数乘是缩放乘法是旋转、剪切等复合变换的叠加。一旦建立起这个几何图像那些枯燥的运算规则瞬间就变得直观、生动甚至“理所当然”了。这篇文章我就想和你聊聊这个思维转换的过程。我们不追求数学上的绝对严谨证明而是聚焦于一个核心目标为矩阵的四种基本运算加、减、乘、除找到清晰的几何解释让你下次看到矩阵时脑子里浮现的不是数字表格而是一系列对空间点、向量、图形的操作动画。无论你是正在啃教材的学生还是工作中突然需要用到线性代数的开发者希望这篇结合了原理、实操和踩坑经验的梳理能帮你打通任督二脉。2. 矩阵的基石加法、减法与数乘的几何直观在深入复杂的矩阵乘法之前我们必须先夯实基础。矩阵的加法和数乘乘以一个标量是理解所有高级操作的起点它们的几何意义也最为直接。2.1 矩阵加法与减法空间的平移我们先从最简单的二维空间说起。假设你有一个点在坐标系里可以用一个向量v [x, y]来表示。在矩阵的语境下我们通常把向量写成列矩阵的形式[[x], [y]]但为了书写方便理解上我们仍将其视为一个点或向量。现在我们有一个平移操作想把所有点都沿着某个方向移动一段距离。这个移动可以用一个平移向量t [a, b]来描述。那么点移动后的新位置v就是v v t [xa, yb]这就是向量加法的几何意义平移。那么矩阵加法呢想象一下你不是移动一个点而是要移动整个坐标系或者说对坐标系施加一个整体的“偏移”。比如我们有两个2x2的矩阵 A 和 B它们可以代表两种不同的线性变换比如两种不同的拉伸效果。矩阵C A B意味着什么呢几何上矩阵A B所代表的变换近似于先执行变换 A再叠加上变换 B 的“增量效果”。但更精确且实用的理解来自一个关键场景仿射变换的矩阵表示。在计算机图形学中纯粹的线性变换用2x2矩阵表示无法实现平移因为平移不是线性变换它不保持原点不动。为了解决这个问题我们引入了“齐次坐标”。在齐次坐标下一个二维点[x, y]被表示为[x, y, 1]。平移变换就可以用一个3x3矩阵来表示[1 0 a] [x] [xa] [0 1 b] * [y] [yb] [0 0 1] [1] [ 1 ]这个3x3矩阵的前2x2部分是一个单位矩阵表示不做线性变换第三列的前两个元素[a, b]就是平移量。现在有趣的部分来了如果我们有一个旋转矩阵 R2x2想把它和平移[a, b]组合成一个完整的“旋转后平移”操作我们就需要构造一个3x3的仿射变换矩阵 M。这个 M 的构造本质上就是将一个扩展后的旋转矩阵与一个平移矩阵相加在齐次坐标的框架下。具体来说我们把2x2的旋转矩阵 R 扩展成3x3矩阵右下角补1其余补0[R00 R01 0] [R10 R11 0] [ 0 0 1]平移矩阵 T 就是上面那个[1 0 a] [0 1 b] [0 0 1]那么组合变换矩阵 M 并不是简单的 R_expanded T。实际上组合是通过矩阵乘法实现的M T * R_expanded顺序很重要。但是当我们单独看这个平移部分时它确实是以“加法”的形式贡献到最终变换的常数项即点的坐标值上的。这揭示了矩阵加法的一个深层几何角色在构建复杂的、包含常数偏移的变换时加法是组合变换中“平移分量”的数学工具。实操心得为什么感觉矩阵加法用得少因为在核心的线性变换部分变换通常通过乘法来组合。加法更常见于两种场景1) 矩阵的逐元素运算如在图像处理中两幅图像对应像素值相加实现混合2) 在构造特定变换矩阵时作为设置矩阵中特定元素如平移项的手段。直接对两个代表完整变换的方阵做加法几何意义反而不如乘法明确。矩阵减法A - B可以理解为加上一个反向的变换A (-B)。在优化算法中比如梯度下降我们经常看到W_new W_old - η * G其中 W 是参数矩阵G 是梯度矩阵η 是学习率。这里的减法几何意义是在参数空间里朝着梯度反方向即函数下降最快方向移动一小步这就是一个典型的“平移”操作。2.2 矩阵数乘空间的缩放与反向数乘就更直观了。一个矩阵 A 乘以一个标量 k得到kA其规则是 A 中的每一个元素都乘以 k。几何意义对整个变换效果进行统一的缩放。假设矩阵 A 代表一个将空间沿x轴拉伸2倍沿y轴拉伸3倍的变换。那么2A代表的变换就是沿x轴拉伸4倍沿y轴拉伸6倍。它相当于把原变换 A 的“强度”整体放大了一倍。更本质地因为矩阵代表线性变换而线性变换满足齐次性T(k*v) k*T(v)。所以用标量 k 乘以变换矩阵 A意味着对变换后所有向量的长度都进行 k 倍的缩放。特例当 k -1 时-A代表的变换就是将原变换 A 的效果“反转”。如果 A 是顺时针旋转30度那么-A就是逆时针旋转30度吗不一定。这取决于变换的性质。对于纯旋转矩阵正交矩阵-A确实相当于旋转180度原角度。但对于一般的变换-A是让所有输出向量都反向。这在几何上可能对应着某种镜像或反向缩放。注意事项数乘与行列式的关系一个关键且实用的性质是det(kA) k^n * det(A)其中 n 是矩阵 A 的阶数。行列式的几何意义是变换前后空间体积或面积的缩放比例。所以数乘 k 会把原变换的体积缩放比例放大k^n倍。例如一个2x2矩阵 A 将面积放大 det(A) 倍那么3A会将面积放大9 * det(A)倍因为3^29。这个关系在调整变换强度、分析变换是否可逆行列式非零时非常有用。3. 矩阵乘法的核心作为变换的复合与组合终于来到最核心也是最容易让人困惑的部分——矩阵乘法。它的计算规则行点乘列看似古怪但它的几何意义是线性代数力量的源泉描述线性变换的复合。3.1 几何意义变换的“接力”假设我们有两个线性变换先用变换 B 作用于空间再用变换 A 作用于得到的新空间。那么从初始空间到最终空间的总体变换就是 A 和 B 的复合变换记作 A ∘ B。矩阵乘法的伟大之处在于这个复合变换 A ∘ B恰好可以用矩阵乘法A * B得到的矩阵来精确表示注意这里的顺序A * B表示先进行 B 变换再进行 A 变换。这与函数复合f(g(x))的顺序是一致的从里到外。让我们用一个具体的二维例子可视化。假设变换 B逆时针旋转90度。变换 A沿x轴拉伸2倍。我们想知道一个点v先旋转90度再沿x轴拉伸2倍最终会到哪里。我们可以分步计算但更高效的方式是求出复合变换矩阵C A * B。计算后C 是一个单一的矩阵。对任何点v我们只需要计算C * v就能一步得到最终结果。这就是矩阵乘法在图形渲染、物理仿真中的核心价值将一系列复杂的连续变换预先合并成一个矩阵极大提升计算效率。3.2 为什么乘法规则是“行点乘列”这是理解的关键难点。我们不是死记硬背规则而是从几何目标反向推导。我们的目标是找到一个矩阵 C使得对于任何向量 v满足C * v A * (B * v)。设 B 是一个 m×n 矩阵A 是一个 p×m 矩阵v 是 n 维向量。先计算u B * v。根据矩阵乘向量的定义u 的第 i 个分量是 B 的第 i 行向量与列向量 v 的点积。u 是一个 m 维向量。再计算A * u。结果 w 的第 j 个分量是 A 的第 j 行向量与列向量 u 的点积。现在我们要把两步合成一步直接得到 w。观察 w 的第 j 个分量w_j (A的第j行) · u (A的第j行) · (B * v)而u B * v本身其第 k 个分量u_k (B的第k行) · v。所以w_j A_j1 * u_1 A_j2 * u_2 ... A_jm * u_m A_j1 * (B的第1行 · v) A_j2 * (B的第2行 · v) ... A_jm * (B的第m行 · v) (A_j1 * B的第1行 A_j2 * B的第2行 ... A_jm * B的第m行) · v看最后这个式子括号里的部分是一个行向量它是矩阵 B 的各行以 A 的第 j 行元素为系数的线性组合。而这个行向量与 v 的点积正是我们想要的 w_j。因此复合矩阵 C 的第 j 行就应该等于这个线性组合。而计算这个线性组合的系数恰好就是 A 的第 j 行与 B 的每一列注意是列在计算A_j1 * B的第1行时B的第1行的第一个元素会乘以A_j1这正好对应着在计算C的第 j 行第1列元素时需要用到A的第 j 行第1个元素和B的第1行第1列元素吗这里有点绕。让我们换一个更简洁的视角为了得到 C 的第 j 行第 i 列的元素C_ji它贡献于最终向量 w 的第 j 个分量并受到初始向量 v 的第 i 个分量的影响。v 的第 i 个分量先通过 B 的每一行具体是每行的第 i 列元素影响中间结果 u 的各个分量然后 u 的各个分量又通过 A 的第 j 行影响最终的 w_j。所以C_ji就是所有可能路径的权重之和C_ji A_j1 * B_1i A_j2 * B_2i ... A_jm * B_mi。看这就是“A 的第 j 行”与“B 的第 i 列”的点积。所以矩阵乘法C A * B的定义C 中位于第 j 行第 i 列的元素等于矩阵 A 的第 j 行与矩阵 B 的第 i 列对应元素的乘积之和。这个看似生硬的定义完全是为了保证C * v能完美等价于A * (B * v)这一几何目标而自然诞生的。核心理解技巧追踪一个基向量的旅程理解矩阵乘法最直观的方法是看一个标准基向量如e1 [1, 0, 0]经过变换后的去向。矩阵 B 的第一列就是B * e1的结果。因为e1只有第一个分量为1与 B 的行点乘后恰好就抽出了 B 的第一列元素。同理矩阵 A 的每一列也是它作用于各个基向量的结果。那么复合变换C A * B的第一列是什么就是C * e1 A * (B * e1)。而B * e1就是 B 的第一列向量。所以C 的第一列就是矩阵 A 乘以 B 的第一列向量的结果。 推广开来矩阵乘积C A * B的每一列就是矩阵 A 分别乘以矩阵 B 的每一列所得到的结果。这个视角将矩阵乘法分解为多次矩阵-向量乘法几何意义极其清晰B 的每一列描述了原空间一组基向量经过 B 变换后的新位置而 A 则对这些新位置的向量再进行一次变换最终结果就是 C 的列。3.3 矩阵乘法不满足交换律的几何根源在绝大多数情况下A * B ≠ B * A。这是矩阵乘法和数字乘法最大的不同之一。几何解释变换的顺序至关重要。“先旋转再拉伸”和“先拉伸再旋转”得到的效果天差地别。先旋转90度再水平拉伸2倍一个竖着的长方形先变成横着的再水平拉长。先水平拉伸2倍再旋转90度一个竖着的长方形先水平拉长变成一个更宽的竖长方形再旋转90度变成一个更高的横长方形。最终形状完全不同。因此Rotate * Scale ≠ Scale * Rotate。这直接导致了矩阵乘法的不可交换性。在编程中这提醒我们在应用一系列变换矩阵时必须严格注意乘法顺序通常采用“从右到左”或“从后往前”的顺序应用取决于向量是列向量左乘还是行向量右乘的约定。4. “矩阵除法”与逆矩阵变换的撤销与求解在标量运算中除法是乘法的逆运算a / b a * b⁻¹。对于矩阵没有直接的“除法”定义但有一个完全对应的概念乘以逆矩阵。4.1 逆矩阵的几何意义逆向变换如果矩阵 A 代表一个线性变换如旋转30度那么它的逆矩阵A⁻¹就代表一个“撤销”该变换的变换如反向旋转30度。数学上定义为A * A⁻¹ A⁻¹ * A I其中 I 是单位矩阵代表“什么都不做”的变换。几何上A⁻¹就是把被 A 变换扭曲的空间再给“拧”回原样的操作。这引出了逆矩阵存在的核心条件变换必须是可逆的。什么样的变换不可逆呢比如一个将三维空间压缩到二维平面甚至一条线的投影变换信息丢失了你无法从二维图像唯一地还原出原来的三维点。对应到矩阵就是行列式为零的矩阵没有逆矩阵。行列式为零意味着变换将空间压缩到了一个更低的维度体积缩放为零这是一个不可逆的过程。4.2 逆矩阵的应用场景求解线性方程组这是逆矩阵最具实用价值的场景。一个线性方程组可以写成矩阵形式A * x b。A是系数矩阵代表一个变换。x是未知数列向量代表原始点。b是常数项列向量代表变换后的点。现在我们知道结果b和变换A想求原来的点x。几何上这就是问“什么点经过变换 A 后会落到 b 这个位置” 解法很直接对 b 施加 A 的逆变换。数学上就是在等式两边左乘A⁻¹A⁻¹ * A * x A⁻¹ * bI * x A⁻¹ * bx A⁻¹ * b所以求解方程组A * x b在几何上等价于寻找一个点x使得A的逆变换能将目标点b映射回x。这完美地将代数求解与空间变换联系了起来。实操心得与避坑指南计算成本对于大型矩阵直接计算逆矩阵A⁻¹在数值计算上是非常昂贵且可能不稳定的尤其是矩阵接近奇异时。在实践中如求解线性方程组更常用的是矩阵分解法如LU分解、QR分解、Cholesky分解等而不是先显式求出逆矩阵再相乘。这些分解方法更高效、更数值稳定。可逆性判断在编程中不要轻易尝试对任意矩阵求逆。必须先判断其是否可逆满秩。一个常用的初步判断是计算矩阵的行列式对于方阵如果行列式绝对值非常接近于零小于一个很小的阈值如1e-10则该矩阵很可能接近奇异求逆会带来巨大误差甚至失败。左逆与右逆对于非方阵m×n m≠n没有标准的逆矩阵。但存在“左逆”(AᵀA)⁻¹Aᵀ当A列满秩时和“右逆”Aᵀ(AAᵀ)⁻¹当A行满秩时它们分别对应最小二乘问题的解。这在机器学习如线性回归中极为常见。4.3 从“除法”到求解更广义的视角理解了逆矩阵是“变换的逆操作”后我们可以把矩阵运算中的“除法”问题都归结为“求解”问题。例如矩阵方程X * A B我们想求X。如果A可逆则X B * A⁻¹。注意这里的顺序因为矩阵乘法不可交换左乘和右乘逆矩阵是完全不同的。X * A B的解是右乘A⁻¹而A * X B的解是左乘A⁻¹。几何解释X * A B意味着先做变换 A再做变换 X总体效果等于 B。那么要找到 X就需要用 B 的变换“抵消”掉 A 的影响但 A 是首先发生的所以我们需要在右侧应用 A 的逆变换来抵消它即X B * A⁻¹。你可以想象成一条变换路径未知变换X → 已知变换A → 最终效果B。为了找到X我们需要从B出发沿着A的反方向走回去。5. 综合实战从几何视角解构一个图形变换问题理论需要结合实践才能真正消化。让我们来看一个计算机图形学中的经典问题并用矩阵的几何语言来重新解读它。问题在二维平面上有一个三角形其顶点坐标为p1(1, 2),p2(3, 1),p3(2, 4)。现在需要对该三角形进行如下操作绕原点逆时针旋转45度。沿x轴方向缩放2倍沿y轴方向缩放0.5倍。平移到新位置(5, 5)。请用矩阵运算求出变换后三角形的顶点坐标。5.1 分步拆解与矩阵构造第1步旋转45度二维旋转矩阵为R(θ) [[cosθ, -sinθ], [sinθ, cosθ]]代入 θ 45° π/4 cos45° sin45° ≈ 0.7071。R [[0.7071, -0.7071], [0.7071, 0.7071]]几何意义这个矩阵的每一列就是原始标准基向量[1, 0]和[0, 1]旋转45度后的新位置。第一列[0.7071, 0.7071]是x轴旋转后的方向第二列[-0.7071, 0.7071]是y轴旋转后的方向。整个矩阵定义了一个新的坐标系。第2步缩放 (2, 0.5)缩放矩阵非常简单缩放因子放在主对角线上S [[2, 0], [0, 0.5]]几何意义这个矩阵将x坐标乘以2y坐标乘以0.5。它将空间在x方向上拉长在y方向上压扁。注意如果缩放因子有负数则包含镜像反射。第3步平移 (5, 5)如前所述平移不是线性变换需要引入齐次坐标。我们将点表示为[x, y, 1]。平移矩阵为T [[1, 0, 5], [0, 1, 5], [0, 0, 1]]5.2 变换的复合与顺序关键问题来了这三个变换应该按什么顺序组合 题目描述的顺序是1.旋转 - 2.缩放 - 3.平移。 在矩阵乘法中变换的应用顺序是从右到左假设我们使用列向量且变换矩阵左乘列向量。因此对于一个点p齐次坐标[x, y, 1]最终的变换应该是p T * (S * (R * p)) (T * S * R) * p所以我们需要计算复合变换矩阵M T * S * R。但注意R和S是2x2矩阵T是3x3矩阵不能直接相乘。我们需要将R和S也扩展到齐次坐标形式R_h [[0.7071, -0.7071, 0], [0.7071, 0.7071, 0], [0, 0, 1]]S_h [[2, 0, 0], [0, 0.5, 0], [0, 0, 1]]现在可以计算了M T * S_h * R_h。顺序先旋转R_h再缩放S_h最后平移T我们来计算一下S_h * R_h的结果这代表了“旋转后缩放”这个复合线性变换S_h * R_h [ [2*0.7071 0*0.7071 0*0, 2*(-0.7071) 0*0.7071 0*0, 0], [0*0.7071 0.5*0.7071 0*0, 0*(-0.7071) 0.5*0.7071 0*0, 0], [0, 0, 1] ] [ [1.4142, -1.4142, 0], [0.35355, 0.35355, 0], [0, 0, 1] ]然后计算最终的M T * (S_h * R_h)M [ [1*1.4142 0*0.35355 5*0, 1*(-1.4142) 0*0.35355 5*0, 1*0 0*0 5*1], [0*1.4142 1*0.35355 5*0, 0*(-1.4142) 1*0.35355 5*0, 0*0 1*0 5*1], [0*1.4142 0*0.35355 1*0, 0*(-1.4142) 0*0.35355 1*0, 0*0 0*0 1*1] ] [ [1.4142, -1.4142, 5], [0.35355, 0.35355, 5], [0, 0, 1] ]几何解读矩阵 M前两列[1.4142, 0.35355]和[-1.4142, 0.35355]是经过旋转和缩放后的新坐标系的基向量。可以看到它们不再是垂直的因为缩放是非均匀的长度也发生了变化。第三列[5, 5, 1]就是平移分量。它独立于线性变换部分直接加到了结果上。5.3 计算结果与验证现在用M乘以每个点的齐次坐标向量 对于p1 [1, 2, 1]:p1 M * p1 [ 1.4142*1 (-1.4142)*2 5*1, 0.35355*1 0.35355*2 5*1, 1 ] [1.4142 - 2.8284 5, 0.35355 0.7071 5, 1] [3.5858, 6.06065, 1]所以p1 ≈ (3.5858, 6.06065)。同理可计算p2,p3。避坑技巧顺序的重要性验证你可以尝试改变顺序比如先平移再旋转缩放 (M_wrong R_h * S_h * T)然后计算一个点的坐标。你会发现结果完全不同。例如先平移(5,5)点(1,2)先到了(6,7)再对这个远离原点的点进行旋转缩放旋转中心依然是原点这会导致一个巨大的弧线运动最终位置与正确顺序的结果大相径庭。在图形学中通常的约定是先进行线性变换旋转、缩放、错切最后进行平移。这个约定符合我们对物体“先改变自身姿态和大小再移动到某个位置”的直觉。5.4 逆变换的应用鼠标点选中的物体理解了复合变换逆矩阵的用处就更明显了。在上面的例子中我们知道了从物体局部坐标系到世界坐标系的变换矩阵M。现在考虑一个常见的交互问题用户在屏幕世界坐标系上点击了一个点(x_screen, y_screen)我们如何判断他点中了这个三角形一个高效的方法是使用逆变换。我们将屏幕点击的坐标通过逆变换M⁻¹映射回三角形的局部坐标系。如果在局部坐标系中该点落在三角形内部则点击命中。步骤将屏幕点击点表示为齐次坐标p_click [x_screen, y_screen, 1]。计算局部坐标p_local M⁻¹ * p_click。在局部坐标系中判断p_local的 (x, y) 是否在原始三角形(1,2),(3,1),(2,4)内使用如重心坐标法等算法。这样我们避免了将三角形的所有顶点都用M变换到世界坐标系再去复杂判断只需对单个点击点做一次逆变换即可。这完美展示了逆矩阵“撤销变换”的几何威力它将一个复杂空间世界空间中的问题转化回一个简单空间局部模型空间中的问题。6. 进阶理解矩阵运算与核心概念的串联当我们从几何视角理解了加减乘除之后再回头看线性代数中的其他核心概念会发现它们都变得顺理成章。6.1 行列式变换的缩放因子与定向行列式det(A)的绝对值表示变换A对空间体积或面积的缩放比例。如果det(A) 2意味着任何形状经过 A 变换后其面积2D或体积3D会变为原来的2倍。几何意义行列式为0变换将空间压缩到更低维度丢失了信息因此不可逆。例如一个将三维空间投影到二维平面的矩阵其行列式为0。行列式为负变换改变了空间的“手性”或定向。比如一个镜像翻转的变换其行列式为负。在二维中这相当于把纸翻到背面在三维中相当于将左手坐标系变成了右手坐标系。与乘法的关系det(A * B) det(A) * det(B)。这很好理解先进行缩放率为det(B)的变换再进行缩放率为det(A)的变换总体缩放率自然是两者的乘积。6.2 特征值与特征向量变换中的“不动”方向特征值λ和特征向量v满足A * v λ * v。几何意义特征向量v是这样一个方向经过变换A之后它保持方向不变或恰好反向只在长度上进行了λ倍的缩放。特征值λ就是这个缩放因子。对于缩放矩阵S [[2,0],[0,0.5]]x轴方向[1,0]和 y轴方向[0,1]就是它的特征向量对应的特征值分别是2和0.5。这直观地反映了沿轴缩放的性质。对于旋转矩阵在实数域内它没有实特征向量因为旋转会让所有方向都发生改变除了旋转180度这种特殊情况。这解释了为什么旋转矩阵的特征值可能是复数。在数据科学的主成分分析PCA中协方差矩阵的特征向量指向数据分布的主要方向主成分对应的特征值表示数据在该方向上的方差大小。这本质上是在寻找数据拉伸最显著的方向。6.3 矩阵的秩变换后空间的维数矩阵A的秩几何上就是变换A的像空间的维数也就是原始空间所有向量经过A变换后所能张成的空间的维度。如果一个3x3矩阵的秩是3满秩意味着三维空间经过变换后仍然充满整个三维空间只是可能被旋转、拉伸、剪切了。如果秩是2意味着三维空间被压缩到了一个二维平面上。如果秩是1则被压缩到一条直线上。如果秩是0则所有向量都被压缩到原点。与可逆性的关系方阵A可逆的充要条件是rank(A) n满秩。因为只有满秩变换信息才没有丢失变换才是“一对一”的从而存在逆变换。7. 常见问题与思维误区澄清在学习和应用矩阵几何意义时以下几个坑我几乎都踩过这里集中总结一下。问题1我总是记不住矩阵乘法的顺序怎么办思维锚点记住一句话——“变换的应用顺序对应矩阵的从右向左乘法”。假设我们有一个列向量v要依次进行变换A、B、C那么最终的变换是C * B * A * v。你可以把它想象成函数嵌套C(B(A(v)))最里面的A最先发生所以在矩阵乘法中也最靠近向量v。多从“变换接力”的几何角度理解而不是死记“行乘列”的计算规则。问题2非方阵的乘法有什么几何意义非方阵A (m×n)代表一个在不同维度空间之间的线性映射。如果m n例如3x2这是一个从低维空间2维到高维空间3维的映射。但注意它的像空间最多是2维的因为只有2个线性无关的列向量所以它实际上是把一个二维平面“嵌入”到三维空间中。这个平面由矩阵的两个列向量张成。如果m n例如2x3这是一个从高维空间3维到低维空间2维的映射是一个投影或信息压缩的过程。三维空间中的点被投影到一个二维平面上。问题3在编程中如NumPy, MATLAB矩阵乘法有时结果和我想的不一样核心陷阱数组的逐元素乘法 (*) 与矩阵乘法 (或dot())。在Python的NumPy中A * B是逐元素相乘要求两个数组形状完全相同。而A B或np.dot(A, B)才是矩阵乘法要求A的列数等于B的行数。这是新手最常见的错误之一务必分清。几何意义只对应矩阵乘法。问题4如何直观判断一个矩阵大概代表什么变换看列向量对于一个变换矩阵它的每一列就是变换后的标准基向量所在的位置。观察这些列向量你能看出新的坐标系轴是如何指向和伸缩的。看特殊矩阵形式对角矩阵纯缩放。对角线元素就是各轴的缩放因子。正交矩阵列向量两两垂直且长度为1纯旋转或镜像旋转。它的逆等于它的转置。上/下三角矩阵代表一种剪切shear变换可以想象成推斜一个图形。计算行列式和迹行列式看体积缩放和定向迹对角线之和在某些情况下与平均缩放因子有关。问题5齐次坐标中的w分量除了用来平移还有什么用齐次坐标[x, y, w]对应笛卡尔坐标[x/w, y/w]。当w1时就是普通的点。当w≠1时它允许我们表示“无穷远点”和进行透视投影。在透视投影中一个3D点[X, Y, Z]被转换为齐次坐标[X, Y, Z, 1]然后乘以透视投影矩阵后其w分量会变成Z相关的值。最后进行“透视除法”除以w就得到了具有近大远小效果的2D坐标。这是计算机图形学中实现3D到2D透视变换的关键。所以齐次坐标和矩阵乘法的结合统一处理了线性变换、平移和投影。把矩阵看作对空间的变换操作符而不仅仅是数字表格是打通线性代数任督二脉的关键。加法是平移的叠加数乘是强度的调节乘法是变换的连续作用而逆矩阵则是让一切恢复原样的撤销按钮。下次当你面对一个矩阵时不妨先问自己它想把空间怎么样是拧一下、拉一下还是压扁带着这个几何图像再去审视计算很多公式就不再是冰冷的符号而是一幅幅生动的空间动画。这种思维方式无论是在理解深度学习中的层变换还是在调试图形渲染的诡异bug时都会成为你最有力的直觉武器。