想象你走进一家高档餐厅。如果你想吃一份牛排,你不会冲进后厨告诉厨师:"用 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(离散傅里叶变换) 构造的。原因要从天线阵列响应说起。
假设基站有一排 $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 码本——相位因子在单位圆上均匀取点,本质就是离散傅里叶变换的列向量。
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 反馈闭环。整个流程像一场默契的双人舞:
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 是"能切成几条并行车道"。
到了 5G NR,码本演进出一个关键分叉:Type I 和 Type II。这两者不是简单的"新旧关系",而是面向不同场景的两套精度档位。
Type I 的逻辑是:从码本里挑一根最好的波束,报它的编号。 每个上报的预编码就是单个 DFT 波束(或多流时几个正交波束)。
它的特点是反馈开销极小——手机只要报几个整数页码就行。适合:
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 波束扫描 + 分级搜索:
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 波束选择。这套机制是毫米波网络覆盖的命脉。
回头看整个码本体系,所有设计都在回答同一个核心问题:在反馈开销和预编码精度之间,怎么找到最佳平衡点?
flowchart LR
Q["核心矛盾<br/>反馈开销 vs 预编码精度"] --> L["增大码本/组合复杂度"]
Q --> R["压缩上报内容"]
L --> LA["精度↑ 干扰↓ 吞吐↑"]
L --> LB["上行开销↑ UE功耗↑ 延迟↑"]
R --> RA["开销↓ 覆盖↑ 可容纳更多用户"]
R --> RB["精度↓ 波束偏 调制降级"]
style Q fill:#f8d7da
具体的设计权衡有几条主线:
用编号代原值:把连续的复数矩阵空间,量化成有限码本,开销从矩阵规模降到 $\log_2 N$ 比特。这是最根本的"省"。
宽带/子带两级:相位/幅度信息分宽带(整段带宽一个值,省)和子带(每段一个值,精)。Type II 默认子带相位、宽带幅度,就是在精度和开销间折中。
DFT 结构化码本:不存随机复数,而是用 DFT 列向量,因为它们天然对应物理方向,还能让基站用 FFT 快速搜索最优 PMI,降低手机运算负担。
分等级菜单:Type I / Type II / 增强型 Type II,给不同场景不同档位。不是越高级越好,而是"够用就好"——边缘用户用 Type I 省开销,中心用户用 Type II 榨干吞吐。
面向 MU-MIMO 的精度跃升:当基站要同时服务多个用户时,预编码精度直接等于抗干扰能力,此时高开销换高精度才划算。
现网排查下行速率低,老工程师会看 UE 上报的 PMI 时序。如果 PMI 在相邻几个值间剧烈跳动,通常意味着:
此时 PMI 上报周期跟不上信道变化,基站用的预编码总是"过期"的。对策是缩短 CSI 上报周期,或开启 CSI 压缩的子带反馈。
有些基站默认走 Type I(省开销),导致 MU-MIMO 用户间干扰压不住,配对增益上不去。调试时确认 RRC 配置里的 codebookType 是否配成 Type II,以及 RI 和端口数是否满足 Type II 的门槛。
边缘用户上行本来就弱,却还要扛 Type II 的高开销反馈,导致上行 PUSCH 拥塞。对策是边缘用户降级用 Type I,或拉长 CSI 周期,把宝贵的上行让给业务数据。
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 会随信道实时变化,所以实际使用的预编码向量是动态变化的——菜单不变,但每顿点的菜不同。
本文由「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 等场景全覆盖。
