<!-- title: 码本：波束的预设菜单 -->

# 码本：波束的预设菜单

## 从"点菜"说起

想象你走进一家高档餐厅。如果你想吃一份牛排，你不会冲进后厨告诉厨师："用 220 度煎 3 分 15 秒，撒 2.3 克盐、0.7 克黑胡椒，醒肉 4 分钟。"那样太累，也太慢。

你只需要做一件事——**指着菜单说："7 号。"**

后厨拿到"7 号"这个编号，就知道对应一套完整的、预先定义好的烹饪参数。这就是"码本（Codebook）"在通信里扮演的角色。预编码矩阵就是那道"菜"，码本就是那张"菜单"，而 PMI（Precoding Matrix Indicator，预编码矩阵指示）就是你点的"菜号"。

这篇我们来彻底讲清楚：基站要给手机发数据时，那套"弯曲电波"的预编码矩阵，到底是怎么确定的？为什么 5G 要搞出 Type I、Type II 两套菜单？工程师在抓包时看到一串 PMI 数字，背后到底意味着什么？

---

## 一、问题的根源：预编码矩阵从哪来

在上一篇《预编码：波束赋形的矩阵内核》里，我们知道了基站有多个天线振子，发射前要把信号乘上一个**预编码向量** $\mathbf{w}$，让多路电波在手机那个方向上"恰好对齐叠加"，形成一根又尖又强的波束。

那么问题来了：这个 $\mathbf{w}$ 到底该填什么值？

最理想的情况是：基站精确知道此刻空间信道的每一个细节（这叫**完美 CSI，Channel State Information**），然后算出最优的 $\mathbf{w}$。但现实骨感——

- **下行信道（基站→手机）只有手机自己能测准**，因为只有手机能感知到信号到达时的真实状态。
- 基站想知道下行信道，得靠手机**把测量结果"反馈"回来**。

这就引出了一个核心矛盾：

> **反馈越精确，预编码越好，吞吐量越高；但反馈本身要占用宝贵的上行资源，开销越大。**

一个 32 端口的基站，它的预编码向量是一个 $32 \times 1$ 的复数列向量，每个复数有幅度和相位。如果要反馈一个**实数复数矩阵**，那开销会大到把上行链路吃光。手机光是上报信道，就没带宽传自己的数据了。

这就是码本诞生的根本动因——**用"编号"代替"原值"，用有限预设换取可控开销。**

---

## 二、码本的核心思想：一个大家都背熟的小册子

码本的精妙之处在于一个约定：

> **基站和手机，事先共同保存同一本"预编码矩阵小册子"，里面每一页都编了号。**

手机测完信道后，不需要把最优矩阵本身报回去，只需做一件事：**翻一遍这本册子，找到跟当前信道最匹配的那一页，然后把页码（PMI）报给基站。** 基站收到页码，对照自己那本一模一样的册子，就知道该用哪个矩阵了。

数学上，码本就是一个有限的预编码向量集合：

$$\mathcal{C} = \{\mathbf{w}_1, \mathbf{w}_2, \cdots, \mathbf{w}_N\}$$

手机的选择规则非常直白——找那个能让接收信干噪比（或者说等效信道增益）最大的向量：

$$\text{PMI} = \arg\max_{i} \; \|\mathbf{H} \mathbf{w}_i\|^2$$

其中 $\mathbf{H}$ 是手机测到的下行信道矩阵。翻译成人话：**挨个试册子里的每个候选波束，看哪个能把信号"怼"得最强，就选它。**

注意一个关键设计哲学：**码本里的每一个向量，都对应一个物理意义上的"波束指向方向"。** 这不是随便编的一堆复数，而是精心设计的、指向不同空间角度的波束。下面看看它们是怎么来的。

---

## 三、码本里的"菜"长什么样：DFT 波束

码本里的预编码向量，绝大多数是基于 **DFT（离散傅里叶变换）** 构造的。原因要从**天线阵列响应**说起。

假设基站有一排 $M$ 个天线振子（均匀线阵，间距 $d$）。当一个频率的信号从**角度 $\theta$** 方向入射时，相邻两个振子收到的信号会有一个**相位差**，因为电波到达第二根振子要多走一段路 $d\sin\theta$。

这个相位差 $\phi = \frac{2\pi d}{\lambda}\sin\theta$ 决定了阵列响应向量：

$$\mathbf{a}(\theta) = \frac{1}{\sqrt{M}} \begin{bmatrix} 1 \\ e^{j\phi} \\ e^{j2\phi} \\ \vdots \\ e^{j(M-1)\phi} \end{bmatrix}$$

你看这个向量的结构——每一行是前一行乘以一个固定的相位因子 $e^{j\phi}$。**不同角度 $\theta$，对应不同的相位因子；不同相位因子，对应不同指向的波束。**

于是码本的构造思路就清晰了：**把角度离散化，每隔一小段取一个角度，每个角度算出一个阵列响应向量，就构成了一张波束菜单。** 这就是 DFT 码本——相位因子在单位圆上均匀取点，本质就是离散傅里叶变换的列向量。

```mermaid
flowchart LR
    subgraph 设计端["码本设计（离线约定）"]
        A1["角度空间<br/>θ = -60° … +60°"] --> A2["均匀离散化<br/>N 个角度"]
        A2 --> A3["每角度算<br/>阵列响应向量 a(θ)"]
        A3 --> A4["打包成码本<br/>C = {w₁…w_N}"]
    end
    subgraph 约定["双方各存一本"]
        A4 --> B1["基站册子"]
        A4 --> B2["手机册子"]
    end
```

这张图回答了一个关键问题：**为什么码本"对得上"。** 因为波束编号和物理方向是一一对应的、预先计算好的，不是运行时才商量。

> **工程直觉**：码本越"厚"（N 越大），角度离散越细，覆盖越精细，但翻找和上报的开销也越大。这是贯穿整个码本设计的张力。

---

## 四、CSI 反馈的全流程：一场精心编排的探测-上报循环

光有码本还不够，得有一整套流程让它跑起来。这就是 **CSI 反馈闭环**。整个流程像一场默契的双人舞：

```mermaid
sequenceDiagram
    participant gNB as 基站(gNB)
    participant UE as 手机(UE)
    Note over gNB: 1. 周期性发送 CSI-RS<br/>(已知参考信号)
    gNB->>UE: CSI-RS 导频（每个天线端口一路）
    Note over UE: 2. 测量每根天线端口<br/>到自己的信道 H
    Note over UE: 3. 翻码本，找最优页码<br/>PMI = argmax ||H·w_i||²
    Note over UE: 4. 同时估算<br/>CQI(信噪比) RI(层数)
    UE->>gNB: 上报 PMI + CQI + RI
    Note over gNB: 5. 查码本取 w(PMI)<br/>据此预编码发送
    gNB->>UE: 经预编码的数据（多流/波束）
```

这里有一个非常重要的细节，新手经常混淆：**基站用来发 CSI-RS 的"天线端口"，不是物理振子，而是逻辑端口。** 一个逻辑端口背后可能映射到一组物理振子（虚拟化）。手机测到的，是"逻辑端口→手机"的等效信道。这一点搞清楚，后面看 PMI 报告才不会晕。

流程里每一步都值得品味其设计：

| 步骤 | 携带的信息 | 为什么这样设计 |
|------|-----------|---------------|
| CSI-RS 发送 | 已知的导频图案 | 让手机"有标准答案"可对照，从接收到的畸变中反推信道 |
| 信道测量 | 估计 H | 信道状态信息（CSI）的原始来源，精度决定一切 |
| PMI 上报 | 码本页码（整数） | 用编号代替矩阵，**反馈开销从 O(端口数²) 降到 log₂(N) 比特** |
| CQI 上报 | 信噪比等级 | 告诉基站该用什么调制编码（MCS），决定吞吐量 |
| RI 上报 | 可用空间层数 | 告诉基站信道能"劈"成几条并行流（空间复用） |

PMI、CQI、RI 这"三件套"是 CSI 报告的核心。其中 **PMI 是波束菜单的页码，CQI 是"这信道有多壮实"，RI 是"能切成几条并行车道"。**

---

## 五、两套菜单：Type I 与 Type II 的精度博弈

到了 5G NR，码本演进出一个关键分叉：**Type I 和 Type II**。这两者不是简单的"新旧关系"，而是面向不同场景的两套精度档位。

### Type I：单波束，省字节的快餐菜单

Type I 的逻辑是：**从码本里挑一根最好的波束，报它的编号。** 每个上报的预编码就是单个 DFT 波束（或多流时几个正交波束）。

它的特点是**反馈开销极小**——手机只要报几个整数页码就行。适合：

- **SU-MIMO**（单用户多流）：给一个用户发多条流，用户处于强信号或视距（LOS）环境，信道方向"尖锐单一"，一根波束就够。
- 上行资源紧张、用户数多、信道简单（比如靠近基站、单一主径）的场景。

### Type II：多波束线性组合，高精度的厨师特供

Type II 的逻辑高级得多：**它不满足于挑一根波束，而是把码本里最强的几根波束（通常 2~4 根），按各自不同的幅度和相位，线性组合成一个更精细的预编码向量。**

$$\mathbf{w} = \sum_{n=1}^{L} c_n \, \mathbf{v}_n$$

其中 $\mathbf{v}_n$ 是码本里选出的 $L$ 个"基波束"，$c_n = \alpha_n e^{j\varphi_n}$ 是每个基波束的**复数权重（幅度+相位）**。

为什么要这么折腾？因为真实信道里，多径丰富、散射复杂，**最优预编码往往不是某一根标准波束，而是几个标准波束的混合**——就像最优口味不是盐或胡椒单味，而是按比例调配。Type II 用线性组合逼近这个"最优混合配方"，精度远高于 Type I。

但代价是：**反馈开销暴涨**。手机不仅要报"选了哪几个波束"，还要报每个波束的幅度和相位（分宽带和子带两层）。开销通常是 Type I 的 4~10 倍。

| 维度 | Type I 码本 | Type II 码本 |
|------|------------|-------------|
| **波束构成** | 单根 DFT 波束（或几个正交波束） | 多根波束的线性组合 |
| **反馈内容** | 波束页码 + 宽带/子带幅度 | 多波束编号 + 每波束幅度 + 每子带相位 |
| **反馈开销** | 低（几十比特量级） | 高（可达数百~上千比特，4~10×） |
| **信道分辨率** | 粗，匹配单一尖锐方向 | 细，逼近真实多径结构 |
| **主打场景** | SU-MIMO、强信号、上行资源紧张 | **MU-MIMO**、富散射、需要精确抑制用户间干扰 |
| **典型吞吐增益** | 基线 | 中低 SNR 下显著提升（精确配对用户） |

这张表里的"为什么"是精髓：**为什么 MU-MIMO 必须用 Type II？** 因为多用户波束赋形不仅要"对准目标用户"，更要"避开其他用户"。这要求预编码向量极其精确，差一点就会"漏波"打到邻座用户身上，造成严重干扰。Type II 的高分辨率组合正是为此而生。

> **一句口诀**：Type I 是"找个最像的现成波束"，Type II 是"自己动手把几个现成波束调出最优配方"。前者省、后者准。

---

## 六、分层码本：模拟波束的"先粗扫再精扫"

上面讲的是**数字预编码**的码本。但 5G 在毫米波等高频段，大量使用**模拟波束赋形**（或数模混合），此时码本要和**波束扫描（beam sweeping）**配合，演化出**分层码本**的思想。

模拟波束赋形用移相器控制各天线相位，一次只能形成一个固定方向波束。基站和手机之间谁也看不见谁，怎么对上眼？答案是 **CSI-RS 波束扫描 + 分级搜索**：

```mermaid
flowchart TB
    Start["开始波束训练"] --> S1["P-1: 宽波束粗扫<br/>少量宽波束覆盖全扇区<br/>找出大致方向"]
    S1 --> S2["P-2: 在粗方向内<br/>用更窄波束精扫<br/>定位主瓣"]
    S2 --> S3["P-3: 在主瓣附近<br/>极窄波束微调<br/>锁定最优指向"]
    S3 --> Done["锁定 Tx-Rx 最优波束对<br/>进入数据传输"]
    style S1 fill:#fff3cd
    style S2 fill:#ffe4b5
    style S3 fill:#ffd699
```

这就像用望远镜找星星：**先用低倍大视野粗扫定位大致方位，再逐级放大、收窄视野精确定位。** 分层码本里，**宽波束本身也可以由多个窄波束"合成"出来**——数学上就是几个 DFT 向量的特定叠加。这样既能覆盖广，又能在确定方向后无缝切换到精细的窄波束。

对应到 NR 的 CSI 报告类型，有 **CSI-RS 资源_indicator（CRI）**：手机上报它测得最强的那个 CSI-RS 资源编号，本质就是上报"哪个发射波束最好"。基站据此完成 Tx 波束选择。这套机制是毫米波网络覆盖的命脉。

---

## 七、为什么这样设计：开销与精度的永恒天平

回头看整个码本体系，所有设计都在回答同一个核心问题：**在反馈开销和预编码精度之间，怎么找到最佳平衡点？**

```mermaid
flowchart LR
    Q["核心矛盾<br/>反馈开销 vs 预编码精度"] --> L["增大码本/组合复杂度"]
    Q --> R["压缩上报内容"]
    L --> LA["精度↑ 干扰↓ 吞吐↑"]
    L --> LB["上行开销↑ UE功耗↑ 延迟↑"]
    R --> RA["开销↓ 覆盖↑ 可容纳更多用户"]
    R --> RB["精度↓ 波束偏 调制降级"]
    style Q fill:#f8d7da
```

具体的设计权衡有几条主线：

1. **用编号代原值**：把连续的复数矩阵空间，量化成有限码本，开销从矩阵规模降到 $\log_2 N$ 比特。这是最根本的"省"。

2. **宽带/子带两级**：相位/幅度信息分**宽带**（整段带宽一个值，省）和**子带**（每段一个值，精）。Type II 默认子带相位、宽带幅度，就是在精度和开销间折中。

3. **DFT 结构化码本**：不存随机复数，而是用 DFT 列向量，因为它们天然对应物理方向，**还能让基站用 FFT 快速搜索最优 PMI**，降低手机运算负担。

4. **分等级菜单**：Type I / Type II / 增强型 Type II，给不同场景不同档位。**不是越高级越好**，而是"够用就好"——边缘用户用 Type I 省开销，中心用户用 Type II 榨干吞吐。

5. **面向 MU-MIMO 的精度跃升**：当基站要同时服务多个用户时，预编码精度直接等于抗干扰能力，此时高开销换高精度才划算。

---

## 八、实战连接：码本知识在现网调试里怎么用

### 场景 1：吞吐量异常，先看 PMI 在不在"乱跳"

现网排查下行速率低，老工程师会看 UE 上报的 PMI 时序。如果 PMI 在相邻几个值间**剧烈跳动**，通常意味着：

- 用户处于快速移动，信道角度剧烈变化；
- 或者处于多径剧烈变化环境（如隧道口、人群遮挡）。

此时 PMI 上报周期跟不上信道变化，基站用的预编码总是"过期"的。**对策**是缩短 CSI 上报周期，或开启 CSI 压缩的子带反馈。

### 场景 2：MU-MIMO 配对失败，查 Type II 是否开启

有些基站默认走 Type I（省开销），导致 MU-MIMO 用户间干扰压不住，配对增益上不去。调试时确认 RRC 配置里的 `codebookType` 是否配成 Type II，以及 RI 和端口数是否满足 Type II 的门槛。

### 场景 3：边缘用户上行被反馈吃掉

边缘用户上行本来就弱，却还要扛 Type II 的高开销反馈，导致上行 PUSCH 拥塞。**对策**是边缘用户降级用 Type I，或拉长 CSI 周期，把宝贵的上行让给业务数据。

### 常见调试陷阱

- **把"端口"当"振子"**：CSI-RS 端口数不等于物理振子数。一个端口可能是多个振子虚拟化的结果，端口数只决定 PMI 报告的维度，不决定真实天线数。混淆这两者会误判波束分辨率。
- **误以为 PMI 一定被采用**：PMI 只是 UE 的**建议**，基站有权改用别的预编码（站在全局角度，比如考虑多个用户的联合优化）。抓包看到 PMI≠实际预编码属正常现象，不一定是 bug。
- **忽视 CSI-RS 的功率偏置**：CSI-RS 与数据 RE 功率比（功率偏置）配置错误，会让 UE 测出的 CQI 偏高或偏低，进而误选 MCS，**误以为是码本问题，实则是测量基准错了**。

---

## 九、几个容易搞混的点

- **码本 ≠ 码字（信道编码里的 codeword）**。一个指预编码矩阵的预设集合（物理层波束），一个指信道编码后的比特块（如 LDPC 码字）。两者英文都用 code，但风马牛不相及。
- **PMI ≠ 波束本身**。PMI 是码本里的**索引编号**，波束是这个编号对应的预编码向量。报的是号，用的是矩阵。
- **Type II 不是 Type I 的升级替代**。它们是**并存的两套菜单**，按场景选用，不是新旧淘汰关系。

---

## 常见问题

**Q1：既然 Type II 精度高那么多，为什么不全部用 Type II？**
A：因为 Type II 的反馈开销是 Type I 的 4~10 倍。在边缘覆盖、上行资源紧张、或 SU-MIMO 单用户场景下，这点精度提升换不来等价的吞吐增益，反而把上行打爆。通信永远是开销与收益的博弈，"够用就好"比"越精越好"重要。

**Q2：TDD 不是靠信道互易性就能知道下行信道吗，还要码本干嘛？**
A：TDD 确实能利用上下行同频的互易性，直接由上行 SRS 估算下行信道，理论上可少用码本。但实际中由于射频收发链路非对称（校准残差）、上行探测信噪比限制，以及部分场景仍需 UE 反馈辅助，码本反馈在 TDD 中并未完全消失，常常与互易性配合使用。FDD（上下行不同频）则必须依赖码本反馈。

**Q3：手机怎么知道当前该用哪个码本、报哪种类型？**
A：基站通过 RRC 信令（CSI-ReportConfig）半静态配置：告诉 UE 用 Type I 还是 Type II、码本子集约束（subsets）、反馈的频域粒度（宽带/子带）、上报周期等。UE 严格按配置执行测量和上报，是"被指挥"的角色。

**Q4：增大码本规模（N 更大）是不是总能提升性能？**
A：不一定。码本更大，角度分辨率更高，理论上量化误差更小；但搜索复杂度和上报比特数也增长（$\log_2 N$），且当信道角度扩展很大、多径丰富时，单纯增加单波束码本收益递减——这也是 Type II 改用"多波束线性组合"而非"无限增大单波束码本"的根本原因。

**Q5：码本里的预编码向量是固定不变的吗？**
A：码本本身（菜单）是标准预先定义、固定不变的，基站和 UE 都照此执行。但**手机每次上报选中的 PMI 会随信道实时变化**，所以实际使用的预编码向量是动态变化的——菜单不变，但每顿点的菜不同。

---

## 参考来源

1. [详解nr Csi中pmi码本的结构原理与类型对比 — 阿里云开发者社区](https://developer.aliyun.com/article/1305742) — 系统对比 Type I / Type II 及增强型码本的原理与开销-精度权衡
2. [Precoding Matrix Indicator in the 5G NR Protocol: A Tutorial (IEEE/arXiv)](https://arxiv.org/pdf/2601.05092) — 学术教程，详述 CSI-RS 测量与 PMI 反馈机制
3. [NR CSI (2) ---- codebook — 知乎](https://zhuanlan.zhihu.com/p/663526370) — 结合协议条款的 CSI / PMI / CQI 构成解读
4. [5G NR Downlink CSI Reporting — MathWorks](https://www.mathworks.com/help/5g/ug/5g-nr-downlink-csi-reporting.html) — 官方示例，演示下行 CSI 报告的端到端计算流程
5. [wireless-technology-5g-notes / PMI.md — GitHub](https://github.com/kanagarajnn/wireless-technology-5g-notes/blob/main/CSI-RS/PMI.md) — CSI-RS 与 PMI 反馈的工程笔记，含结构化说明

---

> 本文由「51学通信」技术团队出品。51学通信由通信行业18年老兵**爱卫生**（微信ID: gprshome201101）维护，聚焦5G/6G核心网、3GPP标准解读、通信前沿技术深度分析。
> 出版作品有《5G核心网原理与实践》《IMS原理与实践》等4本通信专业书籍。知识星球「51学通信」提供深度技术答疑和行业洞察。

> [!tip] 51学通信知识星球
> **星主：爱卫生**（微信：gprshome201101）——公众号「51学通信」创办者，19 年通信行业运维与讲师经验，著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书（各大电商平台有售）。
> **星球定位**：深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域，主打运维岗位与信令分析。
> **当前规模**：5200 篇主题 / 990 个回答，198 元/年。
> **加入福利**：加入星球后请加爱卫生微信，拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题，另有群内分享。
> **AI 加持**：51学通信知识星球已作为 skill 接入 WorkBuddy，使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例，做总结、找文档和 PPT 等场景全覆盖。

![51学通信知识星球海报-扫码加入](https://wiki.500nian.com/images/zhixingqiu_qrcode.png)
