<!-- title: 预编码码本：波束指向的查表字典 -->
# 预编码码本：波束指向的查表字典

> 一本薄薄的"波束菜单"，凭什么能让5G在几十上百根天线上精确转向，却只花几个比特把方向告诉基站？

## 一、从一家只挂菜号的餐厅说起

想象一家怪餐厅：墙上不贴菜名，只贴 1 到 64 的编号。你对服务员说"来一份 37 号"，厨房立刻心领神会。你从来没尝过 37 号具体是酸是辣，但你们之间靠这本编号字典达成了默契——**你点编号，他上对应的菜**。

预编码码本（Codebook）就是 5G 波束赋形世界里这本"编号字典"。理论上，基站用几十根天线发射信号时，能让波束指向空间里几乎任意一个方向，方向的可能性是**连续且无穷多**的。但终端要把"我想要哪个方向"告诉基站，不可能把一个几十维的复数向量原封不动传回去——那会吃掉太多宝贵的上行带宽。于是收发双方约定一本有限的"预编码字典"，终端只需要回传一个**编号**（PMI），基站照着同一本字典把对应的"波束配方"取出来用。

这篇文章要回答的核心问题是：**这本字典到底长什么样？它凭什么能保证我报个编号就能换到大致正确的波束？为什么偏偏是 DFT（离散傅里叶变换）这种结构？**

## 二、先把账算清楚：为什么不直接反馈信道

要理解码本为什么存在，得先看清"直接反馈"有多贵。

预编码的数学本质很简单。设基站有 $N_t$ 根发射天线，数据符号为 $s$，预编码权重向量为 $\mathbf{w}$（一个 $N_t$ 维复数向量），那么实际发射的是 $\mathbf{w}s$。信号经过信道矩阵 $\mathbf{H}$ 到达终端，接收信号为：

$$
\mathbf{y} = \mathbf{H}\mathbf{w}s + \mathbf{n}
$$

**理想的预编码向量 $\mathbf{w}^\star$，是能让 $\mathbf{H}\mathbf{w}$ 信号最强的那个方向**——它就是信道主奇异向量的方向。问题是，这个 $\mathbf{w}^\star$ 是一根"连续的针"，要在空间里精确描述它，每个复数分量都需要不少比特。

举个具体账：一个 32 端口的基站，单个码字是 32 个复数，每个复数量化到 16 比特（实部、虚部各 8 比特），一个子带就要 $32\times16=512$ 比特。一个载波有几十上百个子带，全量反馈一次信道轻松上万比特。而终端到基站的上行控制信道是"挤牙膏"式的窄管道，这么干等于让用户为了说清"我想要点啥"就把整条上行路堵死。

所以工程上做了一个聪明的妥协：**别传那根针本身，只传它在字典里的"近似坐标"**。这就是码本——一个预先存好的、有限的预编码向量集合 $\mathcal{W}=\{\mathbf{w}_1,\mathbf{w}_2,\dots,\mathbf{w}_N\}$。终端测量信道后，从字典里挑出"最像" $\mathbf{w}^\star$ 的那个 $\mathbf{w}_k$，只把序号 $k$ 反馈回去。反馈开销从"几百比特"骤降到"几个比特"。

$$
k^\star = \arg\max_{k} \|\mathbf{H}\mathbf{w}_k\|^2
$$

这个 $k^\star$ 就是著名的 **PMI（Precoder Matrix Indicator，预编码矩阵指示）**。一次 PMI 反馈，往往只有 4~11 个比特，却顶替了上千比特的信道。

## 三、码本的本质：把连续空间"切格子"

理解了动机，码本的设计哲学就清晰了：**它是一次有损压缩**。

理想的预编码向量生活在数学上一个叫 **Grassmann 流形**的曲面上（所有可能的波束方向构成的空间）。码本要做的，就是在这个曲面上撒下 $N$ 个"网格点"，让真实方向总能找到附近一个网格点作为替身。撒点撒得好不好，用**弦距离（chordal distance）**来衡量——任意两个码字离得越远，整体码本越"均匀覆盖"，量化误差越小。

这就是为什么经典码本设计被称为"Grassmann 流形装填（packing）"问题：**让有限的码字尽量均匀地铺满整个方向空间，别挤成一团，也别留下大空洞。**

```mermaid
flowchart TD
    A["基站广播<br/>CSI-RS 参考信号"] --> B["终端测量<br/>估计信道 H"]
    B --> C{"在码本里逐个比对<br/>找出最强方向"}
    D[("预编码码本字典<br/>N 个 w 向量")] -.提供候选.-> C
    C --> E["选出最优序号<br/>= PMI（几个比特）"]
    E --> F["上行回传<br/>PMI + RI + CQI"]
    F --> G["基站查同一本字典<br/>取出对应码字 w_PMl"]
    G --> H["用该码字对数据<br/>做预编码后发射"]
```

这里有一个工程师容易踩的认知陷阱：**PMI 不是"波束角度"，也不是"方位角+下倾角"。** 它纯粹是一个查表序号，它的物理含义完全取决于码本字典里第 PMI 号向量恰好指向哪里。换一本字典，同一个 PMI 值指向的方向天差地别。所以调参数时，单看一个 PMI=37 是没有意义的，必须知道当前用的是哪本码本、几端口、什么过采样。

## 四、为什么偏偏是 DFT：均匀线阵的几何必然

到这里最关键的问题来了：码本里那些 $\mathbf{w}_k$ 到底长什么样？随手挑不行吗？

答案是：不行，而且有一个非常优美的数学必然，让 DFT 向量成了天选之子。

考虑基站最常见的**均匀线阵（ULA）**：$N$ 根天线等间距排成一条直线。当一个平面波从偏离阵法线 $\theta$ 角的方向到达时，由于到达每根天线的路径差，相邻天线收到的信号会有一个固定的相位差 $\phi=2\pi d\sin\theta/\lambda$（$d$ 为天线间距，$\lambda$ 为波长）。于是这个方向的"接收导向矢量"是：

$$
\mathbf{a}(\theta) = \frac{1}{\sqrt{N}}\big[1,\; e^{j\phi},\; e^{j2\phi},\; \dots,\; e^{j(N-1)\phi}\big]^T
$$

看清楚了吗？**这正是一个等幅、相位线性递进的向量。** 而当我们把相位差 $\phi$ 取成离散值 $2\pi k/N$（$k=0,1,\dots,N-1$）时，导向矢量恰好变成 DFT 矩阵的第 $k$ 列：

$$
\mathbf{w}_k = \frac{1}{\sqrt{N}}\big[1,\; e^{j2\pi k/N},\; e^{j2\pi\cdot 2k/N},\; \dots,\; e^{j2\pi(N-1)k/N}\big]^T
$$

DFT 码本不是拍脑袋选的，它是**均匀线阵几何结构 + 离散指向**的自然产物：N 根天线、N 个码字，正好把前半个空间均匀切成 N 个等宽的方向格，每个码字对应一个波束指向。更妙的是，DFT 矩阵的列两两正交，意味着这些波束彼此"不串扰"，正好覆盖整个方向空间且无冗余——这就是前面说的 Grassmann 装填的最优解（对线阵而言）。

```mermaid
graph TB
    subgraph C0["码字0：相位差 0°"]
        a0["天线1 0°"] ~~~ b0["天线2 0°"] ~~~ c0["天线3 0°"] ~~~ d0["天线4 0°"]
    end
    subgraph C1["码字1：相位差 90°"]
        a1["天线1 0°"] ~~~ b1["天线2 90°"] ~~~ c1["天线3 180°"] ~~~ d1["天线4 270°"]
    end
    subgraph C2["码字2：相位差 180°"]
        a2["天线1 0°"] ~~~ b2["天线2 180°"] ~~~ c2["天线3 0°"] ~~~ d2["天线4 180°"]
    end
    C0 --> P0["合成波束：正前方 (0°)"]
    C1 --> P1["合成波束：偏转一格"]
    C2 --> P2["合成波束：偏转两格"]
```

这张图揭示了一个反直觉但极其重要的事实：**所有 DFT 码字给每根天线的"幅度"都一模一样（都是 1/√N），唯一变化的是天线之间的"相位差"。** 改相位差，就是改波束指向。这也解释了为什么"相位"才是波束赋形真正在拧的那个旋钮——这正是另一篇"相控阵"主题的底子，而码本把这些相位旋钮的预设位置打包成了可查表的字典。

## 五、过采样：在格子之间加密插点

N 端口的 DFT 码本只有 N 个正交波束，听起来不少，但用户的真实方向几乎不可能正好落在某个格子上——大概率卡在两个码字之间。这时量化误差（用码本方向去近似真实方向带来的"波束增益损失"）就上来了。

解决办法叫**过采样（Oversampling）**：在原来 N 个正交格点之间，再插入更多的点，把相位差取得更密。引入过采样因子 $O$ 后，码字变成：

$$
\mathbf{w}_{k} = \frac{1}{\sqrt{N}}\big[1,\; e^{j2\pi k/(NO)},\; e^{j2\pi\cdot 2k/(NO)},\; \dots\big]^T, \quad k=0,1,\dots,NO-1
$$

现在候选波束数从 $N$ 个变成 $N\cdot O$ 个，波束指向更密，量化的角度分辨率更高，用户更容易找到"近邻"码字。代价是反馈 PMI 所需比特从 $\log_2 N$ 涨到 $\log_2(NO)$。这是一个典型的**精度换开销**的旋钮。

| 配置维度 | 配置 A | 配置 B | 配置 C |
|---|---|---|---|
| 天线端口数 $N$ | 4 | 8 | 16 |
| 过采样因子 $O$ | 1 | 2 | 4 |
| 候选波束数 $N\!\cdot\!O$ | 4 | 16 | 64 |
| 单维 PMI 比特（粗略） | 2 | 4 | 6 |
| 波束指向角分辨率 | 低 | 中 | 高 |
| 典型反馈开销 | 极小 | 适中 | 较大 |

注意一个工程细节：过采样后的码字**不再两两正交**（格点间距小于正交间距），相邻波束会有些重叠。这没关系——终端反正只挑一个最强的，重叠只意味着"邻居之间稍有串扰"，并不影响单用户性能。真正会因此受影响的是多用户配对，所以 MU-MIMO 场景对码本正交性更敏感。

## 六、从单波束到多波束：Type I 与 Type II 的分野

现实里的基站天线远不止"一根均匀线"那么简单：它是**双极化**的（两组正交极化的天线阵叠加在同一位置），还要支持**多层**传输（同时传多个独立数据流，即秩 rank>1）。于是码本结构也得跟着进化，分出了两大流派。

**Type I 码本（单波束）**：在水平、垂直两个维度各选一个最强的 DFT 波束（再考虑过采样），然后乘上一个"双极化共相位系数"来对齐两个极化组，再按秩组合成多个正交层。它的哲学是"**够用就好**"——选一个主波束，反馈开销小，适合覆盖优先、单用户为主的场景。

**Type II 码本（多波束组合）**：意识到一个真实信道方向常常是几个相邻 DFT 波束的"混合体"，于是不再只挑一个，而是**选 $L$ 个（通常 2~4 个）强波束，对每个分别反馈一个幅度系数和一个相位系数，再把它们加权相加**，合成出一个高精度的预编码向量：

$$
\mathbf{w}^{\text{TypeII}} = \sum_{l=1}^{L} p_l\, e^{j\varphi_l}\, \mathbf{v}_l
$$

其中 $\mathbf{v}_l$ 是选出的 DFT 波束，$p_l$、$\varphi_l$ 是终端反馈的幅度与相位。这相当于用字典里的几个"基本字"拼出一个"无限接近理想"的新字。代价是反馈开销数倍于 Type I。

| 对比维度 | Type I 码本 | Type II 码本 |
|---|---|---|
| 核心结构 | 单一最强 DFT 波束 + 双极化系数 | 多个 DFT 波束加权线性组合 |
| 预编码精度 | 中（方向量化误差较大） | 高（逼近理想匹配信道） |
| 上行反馈开销 | 小 | 大（约 3~6 倍） |
| 空间分辨率 | 单一指向 | 可拟合复杂多径方向 |
| 典型适用 | SU-MIMO、中低频段、覆盖优先 | MU-MIMO、中高频段、容量优先 |
| 适合的秩 | 全秩皆可 | 主要中低秩 |

"为什么这样设计"的答案藏在用途里：**SU-MIMO 的瓶颈是信号本身够不够强**，一个粗指向的主波束就能吃下大部分增益，Type I 的省下的开销可以多传数据；而 **MU-MIMO 的命门是用户之间的空间干扰**，预编码必须把每个用户的波束雕得又准又窄，还要在"别人"的方向上尽量压低（这正是零陷的活儿），Type II 的精细组合必不可少。

```mermaid
graph LR
    subgraph TI["Type I：单波束"]
        t1["挑 1 个最强 DFT 波束"] --> t2["× 双极化共相位"] --> t3["输出 1 个指向向量"]
    end
    subgraph TII["Type II：多波束组合"]
        q1["挑 L 个强 DFT 波束"] --> q2["每波束配 幅度+相位 系数"] --> q3["加权求和"] --> q4["输出高精度向量"]
    end
    TI -.开销小.-> Use1["SU-MIMO / 覆盖"]
    TII -.精度高.-> Use2["MU-MIMO / 容量"]
```

## 七、上下行的分工：码本 vs 非码本

码本不是万能的，它和"非码本（Non-codebook）"预编码是一对分工。区别在于**最优波束向量 $\mathbf{w}^\star$ 怎么得到**：

- **码本方式**：终端从有限字典里选，反馈 PMI。优点是反馈省，缺点是天生有量化误差。
- **非码本方式**：基站直接利用**信道互易性**，靠终端发上行的探测信号（SRS）自己测出信道，然后实时算出 $\mathbf{w}^\star$，精度高、无需查表。

```mermaid
flowchart TB
    subgraph FDD["FDD（上下行不同频）"]
        F1["互易性差"] --> F2["下行: 终端测信道<br/>选码本回传 PMI"]
        F2 --> F3["上行: 终端用 TPMI<br/>码本预编码"]
    end
    subgraph TDD["TDD（上下行同频）"]
        T1["互易性好"] --> T2["终端发 SRS"]
        T2 --> T3["基站测上行信道<br/>互易推出下行信道"]
        T3 --> T4["基站实时算 w<br/>非码本预编码"]
    end
```

这张图道破了一个关键：**码本是给"没法用互易性"的场景准备的"次优但通用"方案。** TDD 系统上下行同频，基站能直接从 SRS 推出下行信道，自然倾向非码本（算得更准）；而 FDD 系统上下行频差大、互易性差，只能靠 PMI 码本这条反馈通道。所以 5G 里下行在 FDD 时几乎全用码本，TDD 时大量用非码本（也会保留码本做兜底）；上行则普遍用码本（终端算力有限，靠 TPMI 查表更省电）。

## 八、工程师实战：码本知识在哪里派上用场

知道了原理，看现网问题就会豁然开朗。几个高频场景：

**1. MU-MIMO 调度配对失败。** 两个用户上报的 PMI 指向"几乎相同"的码字，意味着他俩的空间信道高度相关，基站没法用预编码把他们分开——这就是码本视角下的"空间区分度不足"。优化方向不是死磕功率，而是换用户配对、或开启 Type II 码本提升分辨率。

**2. PMI/CQI 上报异常导致吞吐量塌方。** 终端如果长期上报固定 PMI、或 RI（秩指示）卡在 1，往往不是"网络差"，而是终端在码本里找不到匹配方向（比如处于强直射径但码本栅格太稀疏），或者过采样配置与天线阵不匹配。这时候排查码本配置（端口数、过采样因子）比调功率更有效。

**3. 高频段（毫米波）波束掉线。** 毫米波用码本做"波束扫描"找最强指向（SSB 波束扫、CSI-RS 波束扫）。理解了"过采样 = 更密的波束栅格"，就明白为什么毫米波要更大的码本、更细的扫描——因为它波束窄，栅格稀一点就漏掉用户。

**常见调试陷阱**：把 PMI 当成"方位角"去解读。前面强调过，PMI 是查表序号，离开码本上下文毫无意义。正确的看图姿势是结合**当前码本配置 + PMI 序号 → 反查该码字的方向**，而不是直接拿 PMI 数值做文章。

## 常见问题

**Q：码本预编码和非码本预编码，到底哪个更好？**
A：不能一概而论。非码本精度高、能实时匹配信道，但依赖上下行信道互易性（TDD 天然友好，FDD 不行）和基站算力；码本有量化天花板，但反馈省、兼容性好、对终端算力要求低，是 FDD 的主力，也是 TDD 的兜底。现网里两者常并存。

**Q：PMI 是不是就是波束的方位角？**
A：不是。PMI 是码本字典里的一个序号，它的物理指向完全由"当前码本结构"决定。同样的 PMI 值，在 4 端口码本和 32 端口码本里指向的方向完全不同。脱离码本谈 PMI 没有意义。

**Q：为什么终端不直接把整个信道矩阵反馈回去？**
A：因为开销吃不消。一个高维复数信道矩阵量化下来动辄上千比特，而上行控制信道是窄管道。码本的本质就是用"几个比特的序号"去替代"上千比特的向量"，是一次有损但极高效的压缩。

**Q：过采样因子是不是越大越好？**
A：不是单调递增的好。过采样让波束栅格更密、量化更准，但 PMI 反馈比特也随之上涨，挤占上行资源。存在一个"边际收益递减"的拐点——再加密，增益提升有限，开销却线性增长。现网通常把过采样设在 2~4 之间，是精度与开销的工程平衡。

**Q：Type II 一定比 Type I 好吗？为什么要保留 Type I？**
A：Type II 精度高但开销大，主要服务于 MU-MIMO 的精细需求。对于 SU-MIMO，单个主波束就能拿下大部分增益，Type II 多出来的反馈开销反而"得不偿失"。保留 Type I 是为了让系统在不同场景下各取所长——覆盖优先用 I，容量优先用 II。

## 参考来源

1. [Precoding Matrix Indicator in the 5G NR Protocol: A Tutorial on 3GPP Codebook](https://arxiv.org/abs/2601.05092) — 一篇系统讲解 5G NR 波束赋形码本结构与 PMI 反馈机制的教程级论文。
2. [5G NR 码本设计原理及 PMI 参数解析（CSDN）](https://blog.csdn.net/bingbingganhh/article/details/157138465) — 从 DFT 码本出发，图解 Type I/Type II 码本的空间域基构造。
3. [详解 NR CSI 中 PMI 码本的结构原理与类型对比（阿里云开发者）](https://developer.aliyun.com/article/1305742) — 对比 Type I/II 及增强型码本在反馈开销与精度上的核心权衡。
4. [DFT 码本快速生成——波束赋形方向权重快速计算（知乎）](https://zhuanlan.zhihu.com/p/659786648) — 用通俗推导说明 DFT 与预编码码本、PMI 方向描述之间的内在联系。
5. [ShareTechnote — 5G NR MIMO / Codebook](https://www.sharetechnote.com/) — 通信界公认的权威学习站点，以平实图解讲解 MIMO、预编码与码本概念。

---
> 本文由「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)
