← 目录Ch06 矩阵运算
Ch06 分块矩阵

Block Matrix · 大矩阵的处理艺术

🎮 为什么要分块?

大矩阵的处理艺术

10000×10000 图像矩阵太大了!内存放不下→切成小块逐块处理"切豆腐"思想
🖼️ 场景一:处理超大图像

你要处理一张 10000×10000 的图像矩阵,内存装不下。怎么办?

开篇
刚才的游戏告诉我们:分块是处理大矩阵的利器

三大应用场景:

  • 内存优化:大矩阵切块,逐块加载处理
  • 并行计算:子块分配给不同 GPU/节点
  • 稀疏存储:块对角矩阵只存非零子块
6.1 分块矩阵入门
🎯 目标:理解如何将矩阵横平竖直「切豆腐」,得到子矩阵网格

🎮 分块矩阵构建器

点击行/列之间的切割按钮,自定义分块方式

1234567891011121314151617181920
分块结果
2 × 2
块网格大小
4
子块总数
快速预设
📐 分块表示
A = [A₁₁, A₁₂, ...; A₂₁, A₂₂, ...]
原矩阵 4×5 被分成 2×2 个子块
💡 提示:点击 ✂️ 按钮可以添加或移除切割线。相同颜色的单元格属于同一个子块。
6.2 分块矩阵乘法
🎯 目标:理解块级乘法规则 Cᵢⱼ = Σₖ Aᵢₖ·Bₖⱼ,子块当作「元素」来运算

🎮 分块矩阵乘法演示

点击结果块,查看分块乘法的计算过程

分块矩阵 A
1
2
3
4
5
6
7
8
9
×
分块矩阵 B
1
0
0
1
2
3
4
5
6
=
结果 C = AB
0
0
0
0
0
0
0
0
0
选择要计算的结果块
C11=A 的第 1 行块 × B 的第 1 列块
A11
×
B11
+
A12
×
B21
=
C11
公式:Cij = Σk Aik · Bkj(块乘法 + 块加法)
💡 关键理解
• 分块乘法规则与元素乘法完全相同:行块 × 列块
• 唯一区别:单个"元素"变成了"子矩阵"
• 要求:A 的列分块方式 = B 的行分块方式
6.3 外积展开视角
🎯 目标:理解矩阵乘法的另一种视角 AB = Σ (A的列) ⊗ (B的行)

🎮 外积展开可视化

理解矩阵乘法的"列乘行"视角:AB = Σ (A的列) ⊗ (B的行)

选择第 k 项:
第 1 项外积: a1 ⊗ b1T
a1 (A的第1列)
1
2
3
⊗
b1ᵀ (B的第1行)
1
2
3
=
秩1矩阵
1
2
3
2
4
6
3
6
9
每个外积都是秩1矩阵(所有行成比例)
📐 外积展开公式
AB = Σk=1n (A的第k列) ⊗ (B的第k行)
• 每一项是秩1矩阵
• 结果是这些秩1矩阵的和
• 这个视角在低秩近似中非常有用
6.4 克罗内克积
🎯 目标:理解 A⊗B 将每个元素 aᵢⱼ 替换为 aᵢⱼ·B,得到更大的矩阵

🎮 克罗内克积计算器

修改矩阵 A 和 B,实时查看 A ⊗ B 的结果

A (2×2)
⊗
B (2×2)
快速预设 B
📐 尺寸规则
A: 2×2 ⊗ B: 2×2
= 结果: 4×4
一般:(m×n) ⊗ (p×q) = (mp)×(nq)
结果 A ⊗ B (4×4)
1
0
2
0
0
1
0
2
3
0
4
0
0
3
0
4
每个 aᵢⱼ 被替换为 aᵢⱼ·B(用颜色标记)
🔢 克罗内克积性质
(A⊗B)(C⊗D) = (AC)⊗(BD)
(A⊗B)ᵀ = Aᵀ⊗Bᵀ
(A⊗B)⁻¹ = A⁻¹⊗B⁻¹
本章小结
分块思想是高性能计算的基础
分块运算规则

• 加法:逐块加
• 乘法:Cᵢⱼ = Σₖ Aᵢₖ·Bₖⱼ
• 转置:整体转置 + 子块转置

两种乘法视角

• 标量积:cᵢⱼ = 行·列(内积)
• 外积展开:AB = Σ 列⊗行

克罗内克积:(A⊗B)(C⊗D) = (AC)⊗(BD),尺寸 (m×n)⊗(p×q) = (mp)×(nq)

📚 下一章:Ch07 向量空间