首页 › deep-tech › 预编码:发射前先给信号整形

预编码:发射前先给信号整形

一、一个反直觉的问题

先抛一个反直觉的问题:无线信号在空中会衰减、会扭曲、会被噪声淹没——那我们为什么不在接收端下功夫去补救,反而要在发射端"提前动手",把信号先揉捏变形一遍?

这正是预编码(Precoding)在做的事:它让发射机在把信号送上天线之前,先乘上一个精心设计的加权矩阵,把信号"提前偏一偏、提前歪一歪",使得信号在穿越信道这一趟旅程之后,到达接收端时反而更干净、更整齐、更不容易和别的信号打架。

听起来像是在"未卜先知"。预编码之所以能做到,是因为它掌握了信道的状态信息——知道信道会怎么变形,就能提前用一次反向的变形去抵消它。这正是 MIMO 系统能把多根天线变成并行管道、能把同一份频谱切给多个用户的底层引擎。

本文要回答的核心问题是:预编码到底在算什么?为什么需要它?码本又是怎么回事? 我们从最朴素的直觉讲起,一路走到 SVD、迫零、注水定理,最后落到工程师日常调试里那些 PMI、RI、CQI 上。

二、从"风中投篮"说起

想象你站在球场投篮,今天刮侧风。如果你对着篮筐正中投,球会被风吹偏;老练的射手不会正着投,而是迎着风的方向提前偏一点瞄准,让风把球"修正"回篮筐。

这个"提前偏一点",就是预编码的全部直觉:

再换一个更贴近通信的比喻。你给远方的同事寄一件易碎的瓷器,已知快递路上颠簸剧烈(信道有失真)。最聪明的做法不是寄过去再让他修补,而是发货前就多裹三层防震膜、放进定制凹槽(预编码),让瓷器经颠簸后依然完好。

注意两个比喻的差别:风中投篮强调"抵消失真",定制包装强调"主动适配"。预编码在真实系统里两者都做——既补偿信道,又把能量集中往有用的方向送。理解了这一点,后面所有的公式都只是给这个直觉穿上数学外衣。

三、把无线信道看成"会变形的矩阵"

要给信号"提前整形",首先要量化"信道会怎么变形"。在多天线系统里,发射有 $N_t$ 根天线,接收有 $N_r$ 根天线,从第 $j$ 根发射天线到第 $i$ 根接收天线之间,都有一个复数增益 $h_{ij}$(包含幅度衰减和相位旋转)。把这 $N_r \times N_t$ 个复数排成一个矩阵,就得到信道矩阵 $\mathbf{H}$。

接收信号就可以写成:

$$ \mathbf{y} = \mathbf{H}\mathbf{x} + \mathbf{n} $$

其中 $\mathbf{x}$ 是发射信号向量,$\mathbf{n}$ 是噪声。这个公式读起来很直白:信号经过信道,就是被一个矩阵乘了一下,再加点噪声。 信道不是一个玄学的"黑盒子",而是一台确定性的"线性变换机器"——它会旋转、拉伸、混合你的信号。

既然信道是"乘一个矩阵",那预编码自然是"发射前先乘另一个矩阵"。设我们要发送的真正数据符号是 $\mathbf{s}$(称为"层",layer),发射端先用预编码矩阵 $\mathbf{F}$ 乘上它,真正送上天线的是 $\mathbf{x}=\mathbf{F}\mathbf{s}$。于是接收端看到的是:

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

预编码的全部数学,就是在研究:$\mathbf{F}$ 该取什么,才能让 $\mathbf{H}\mathbf{F}$ 这个乘积最符合我们的心意? "心意"不同,$\mathbf{F}$ 的设计准则就不同——这是后文区分单用户、多用户、不同算法的关键。

四、预编码在发射链路里的位置

预编码不是孤立的一步,它嵌在整条发射处理流水线里。先看一张流程图,建立全局印象:

flowchart TD
    A[传输块<br/>TB] --> B[信道编码<br/>+ 速率匹配]
    B --> C[调制映射<br/>QPSK/16QAM...]
    C --> D[层映射<br/>Layer Mapping]
    D --> E[预编码<br/>Precoding: x=F·s]
    E --> F[资源单元映射<br/>RE Mapping / IFFT]
    F --> G[天线端口<br/>→ RF → 多根天线]

    style E fill:#cfe8ff,stroke:#1976d2,stroke-width:2px
    style D fill:#e8f5e9,stroke:#388e3c

数据先被编码、调制成一串符号,然后经过层映射切成 $L$ 路并行的数据流(称为"层"),每一层是一个独立的数据序列。预编码的作用,就是把这 $L$ 路符号通过矩阵 $\mathbf{F}$(维度 $N_t \times L$)混合、加权后,映射到 $N_t$ 根天线上发射。

这里有个常被忽略的细节:"层"和"天线"数量不必相等。层数 $L$(也叫秩 Rank)代表真正能并行的独立数据流数,受限于信道的秩;天线数 $N_t$ 是物理资源。预编码矩阵负责在这两者之间搭桥。这也解释了为什么反馈里有个参数叫 RI(Rank Indicator,秩指示)——它告诉发射端:这条信道当前最多能撑起几条并行管道。

五、最优预编码的灵魂:SVD 把信道拆成并行管道

现在到了本文最核心的洞察。1920 年代,线性代数里有个叫奇异值分解(SVD)的工具:任何矩阵 $\mathbf{H}$ 都可以分解成三个矩阵的乘积:

$$ \mathbf{H} = \mathbf{U}\boldsymbol{\Sigma}\mathbf{V}^{H} $$

其中 $\mathbf{U}$、$\mathbf{V}$ 是酉矩阵(只做旋转,不改变能量),$\boldsymbol{\Sigma}$ 是对角矩阵,对角线上的 $\sigma_1 \ge \sigma_2 \ge \dots \ge \sigma_r$ 叫奇异值,代表信道里 $r$ 个并行子信道的"粗细"。

把这个分解代入接收公式,并在收发两端各乘一个旋转矩阵($\mathbf{V}$ 给发射预编码,$\mathbf{U}^H$ 给接收合并),就发生了一件美妙的事:

$$ \mathbf{U}^{H}\mathbf{H}\mathbf{V} = \boldsymbol{\Sigma} $$

也就是说,原本会"搅混"信号的信道矩阵,被对角化成了若干个互不干扰的并行标量信道!每个子信道的增益就是对应的奇异值 $\sigma_i$。这就是 MIMO 空间复用的数学本质——多根天线+预编码,把一个会搅混的多维信道,拆成若干条独立的"虚拟管道"。

flowchart LR
    subgraph 发射端
      S1[s1]
      S2[s2]
    end
    S1 --> V[预编码矩阵 V<br/>旋转+加权]
    S2 --> V
    V --> HX["空中信道 H<br/>被拆解为并行模式"]

    HX --> U["接收合并 Uᴴ"]
    U --> Y1[y1 = σ1·s1]
    U --> Y2[y2 = σ2·s2]

    style V fill:#cfe8ff,stroke:#1976d2
    style U fill:#e8f5e9,stroke:#388e3c
    style HX fill:#fff3e0,stroke:#f57c00

这张图里最关键的是中间那条"空中信道"被拆成了正交模式。预编码矩阵 $\mathbf{F}=\mathbf{V}$(取前 $L$ 列)做的就是"把每层数据灌进对应那条最匹配的虚拟管道"。

为什么这套设计"最优"? 因为奇异值是天然的优先级排序。$\sigma_1$ 最大,那条管道最粗,能传最多能量;$\sigma_r$ 最小,管道最细。发射机据此分配功率——好管道多灌功率、差管道少灌甚至关掉——这就是著名的注水定理(Waterfilling)。直觉上,注水定理就像往高低不平的连通器里倒水:水会自动优先填满最低(条件最差)的容器到同一水位,但通信里反过来——我们把功率优先投给条件最好的管道,因为那里投资回报率最高。当信道很差、奇异值很小时,宁可把那条管道关掉,省下的功率加到好管道上,总容量反而更高。

flowchart LR
    subgraph 注水功率分配
      P1["管道1 σ1=10<br/>分配功率最多"]
      P2["管道2 σ2=4<br/>分配功率中等"]
      P3["管道3 σ3=0.5<br/>几乎不分配"]
    end
    P1 --> CAP[总容量最大化]
    P2 --> CAP
    P3 -.->|关闭| SKIP[省下功率<br/>补给好管道]
    SKIP --> CAP
    style P1 fill:#c8e6c9
    style P3 fill:#ffcdd2

六、单用户 vs 多用户:目标不同,预编码不同

到这里,我们一直在做一件事:最大化一个用户的吞吐量。这就是单用户 MIMO(SU-MIMO)的预编码目标——集中火力,让目标用户的信号最强。最优解就是上一节的 SVD 预编码。

但真实网络里,基站往往要同时服务多个用户,同一份时频资源要被几个手机共享。这时问题变了:不能只顾自己强,还要保证不给别人添乱。这就是多用户 MIMO(MU-MIMO)预编码,设计准则从"最大化信号"变成了"在最大化信号和抑制用户间干扰之间权衡"。

维度 SU-MIMO 预编码 MU-MIMO 预编码
服务对象 单个用户 同一资源上多个用户
核心目标 最大化自身吞吐量(容量) 自身强 + 抑制用户间干扰
代表算法 SVD/特征模预编码 迫零 ZF、MMSE、共轭 MRT
数学焦点 对角化信道,提取并行管道 让 $\mathbf{H}\mathbf{F}\approx\mathbf{I}$(每用户只看自己)
信道要求 需要完整信道状态 需要所有用户的信道,且用户多时矩阵病态
典型场景 单机高速下载、Carrier 聚合 商圈、场馆多用户同频

MU-MIMO 里最经典的两个算法,正体现了两种不同的"脾气":

$$ \mathbf{F}_{ZF} = \mathbf{H}^{H}\left(\mathbf{H}\mathbf{H}^{H}\right)^{-1} $$

它干净利落,但代价是当用户间信道方向很接近(矩阵接近奇异)时,$\mathbf{F}$ 里的系数会变得很大,相当于发射端要付出"成倍的功率"去抵消干扰——ZF 是个暴脾气,宁折不弯,干扰为零但可能把噪声放大。

$$ \mathbf{F}_{MMSE} = \mathbf{H}^{H}\left(\mathbf{H}\mathbf{H}^{H} + \frac{N_0}{P}\mathbf{I}\right)^{-1} $$

噪声大时它退化为 MRT(求稳,先把信号怼强),信噪比高时它趋近于 ZF(有余力去清干扰)。MMSE 是 ZF 和 MRT 的"折中派",也是工程里最常用的稳健选择。

七、码本预编码:一本约定的"编号菜单"

SVD 预编码虽美,但有个现实障碍:发射端怎么知道信道矩阵 $\mathbf{H}$? SU-MIMO 里,信道要在接收端(手机)测量,再告诉发射端(基站)。如果手机把整个复数矩阵原样反馈回去,开销大得惊人——一个 8 天线、双极化的信道矩阵,反馈几百上千个复数,上行链路根本吃不消。

工程上的解法非常巧妙,叫码本预编码(Codebook-based Precoding):基站和手机事先约定好一本"编号菜单",菜单里列着几十到几百个预先设计好的预编码矩阵,每个矩阵编一个号。手机测完信道后,不反馈矩阵本身,只从菜单里挑出最优的那一个,把编号反馈回去就行。这个编号就叫 PMI(Precoding Matrix Indicator,预编码矩阵指示)。

打个比方:你点外卖不用口述"番茄炒蛋、少油、加葱花、米饭七分满",商家和你手里都有一本编号菜单,你只要说"3 号套餐",省时省带宽。PMI 就是那串"3 号"。

为了让你直观感受这套反馈机制,画一张闭环码本预编码的时序图:

sequenceDiagram
    participant UE as 手机(UE)
    participant gNB as 基站(gNB)

    gNB->>UE: 下发 CSI-RS 参考信号
    UE->>UE: 估计下行信道 H
    UE->>UE: 在码本中搜索最优矩阵<br/>记录 PMI / RI / CQI
    UE->>gNB: 反馈 PMI + RI + CQI(少量比特)
    Note over gNB: 按编号从码本查出预编码矩阵 F
    gNB->>gNB: 用 F 对下行数据预编码
    gNB->>UE: 预编码后的数据(精准指向UE)

注意这里反馈的不只是 PMI,还有两个"兄弟":RI(用几层/几条管道)和 CQI(信道质量,决定调制编码阶数)。三者合称 CSI(Channel State Information)反馈,是闭环预编码运转的血液。

码本的设计本身就是一门学问。基本思路是把"所有可能的信道方向"用尽量少的矩阵去覆盖,让每个真实信道都能在码本里找到一个足够接近的预编码器。码本矩阵通常由 DFT 向量的组合构成——因为 DFT 向量天然对应均匀阵列的不同指向,正好和"波束指向"对应。这也透露出码本预编码和波束赋形的深刻联系(下一节细讲)。

码本的精度分档:低精度码本(业内常称 Type I)反馈比特少,覆盖粗,适合 SU-MIMO 或低阶场景;高精度码本(Type II)反馈比特多、能在多个子带上分别精细描述信道,适合 MU-MIMO——因为 MU-MIMO 对预编码精度极其敏感,一个 PMI 选偏了,残留干扰就会把整组用户拖垮。

八、码本 vs 非码本:FDD 与 TDD 的分水岭

有没有不靠码本的办法?有,叫非码本预编码(Non-codebook Precoding),关键在信道互易性( reciprocity)。

在 TDD 系统里,上下行共用同一段频率,理论上上行信道和下行信道在短时间内是"同一个"。于是基站可以直接听手机发来的上行探测信号(SRS),测出上行信道,再当成下行信道来用,当场算出预编码矩阵,完全不需要码本和 PMI 反馈。这就是为什么 Massive MIMO 普遍建在 TDD 上——几百根天线要反馈完整码本开销不可接受,互易性让基站能"自力更生"。

而 FDD 系统上下行频率相差甚远,互易性不成立,只能老老实实靠码本 + PMI 反馈。

维度 码本预编码 非码本预编码
适用双工 主要是 FDD(也用于 TDD) 主要是 TDD
信道获取 UE 反馈 PMI/RI/CQI 基站从上行 SRS 直接估计
反馈开销 较大(PMI+RI+CQI) 极小(无需 PMI)
精度 受码本量化限制 理论上更精确(前提:校准好)
关键依赖 码本设计 + 反馈 上下行互易性 + 收发校准
对 Massive MIMO 开销随天线数爆炸,吃力 天然契合

需要强调:TDD 的互易性也不是白来的,需要射频校准去补偿收发链路的非对称性。校准做不好,非码本预编码的优势就荡然无存——这是现网调测里一个高频踩坑点。

九、波束赋形 vs 预编码:到底是不是一回事?

学到这儿,很多工程师会困惑:波束赋形(Beamforming)和预编码(Precoding)是不是一回事? 网上说法众说纷纭。这里给一个清晰的辨析。

从数学本质看,两者都是"发射前乘一个加权矩阵",是同一个操作的不同叫法。差别在于视角和颗粒度:

可以这么记:波束赋形是"看得见的能量整形",预编码是"算得出来的矩阵加权";当加权矩阵的列恰好对应空间里的某个方向时,预编码就表现为一束波束。在 5G 的混合波束赋形架构里,数字预编码管"多用户/多流复用",模拟波束赋形管"粗对准",两者分工协作——预编码是"内层精细控制",波束赋形是"外层能量导向"。

一个工程上的判别经验:如果讨论的是毫米波怎么用码本里的波束去扫描对准,那是在讲波束赋形;如果讨论的是SU/MU-MIMO 里 PMI 怎么选、秩怎么定,那是在讲预编码。两者底层操作同源,但工程语境里我们用不同的词强调不同的关切。

十、闭环 vs 开环:反馈不来怎么办?

闭环预编码依赖 PMI 反馈,但有两种情形反馈可能失效:高速移动(信道变得太快,PMI 反馈回来已过时)和反馈链路本身不可靠。这时工程上会切换到开环预编码。

开环预编码不依赖实时 PMI,发射端用一组固定的预编码矩阵,配合循环延迟分集(CDD)等技巧人为制造分集。它牺牲了"精准对准信道"的收益,换取了"无需反馈、稳健抗变"的鲁棒性。高速场景下,与其追逐一个永远慢半拍的 PMI,不如用开环+分集稳稳地传——这是闭环与开环权衡的典型决策。

十一、Massive MIMO 把预编码推向极致

当基站天线数从几根涨到几十、上百根(Massive MIMO),预编码的行为会发生质变:

换句话说,天线越多,预编码的设计反而越"返璞归真"——这正是大规模 MIMO 的迷人之处。

十二、实战连接:调试里的 PMI/RI/CQI

回到工程师的本职:这些原理在现网调试里长什么样?

十三、常见误解与调试陷阱

  1. "预编码=波束赋形,没区别":如前所述,底层操作同源,但工程视角有别。混为一谈会让你误判问题——波束对准的锅(模拟移相、波束管理)和预编码矩阵的锅(PMI、秩)要分开查。

  2. "码本越大越好":码本越大,量化越精细,但反馈开销线性增长,且 PMI 反馈的可靠性下降。Type II 大码本只在 MU-MIMO 等高精度需求下才划算,盲目上大码本反而拖垮上行。

  3. "TDD 一定比 FDD 好":TDD 靠互易性省了反馈,但前提是射频校准到位。校准漂移会导致基站算出的预编码与真实下行信道错配,表现出来的现象和 FDD 反馈失真一模一样——别一遇到问题就怪双工方式,先查校准。

  4. "RI 越高越好":RI 高意味着能并行更多流,但每条流的 SINR 会被稀释(功率分摊)。低 SINR 下强开高 RI,反而每层都解调失败、触发大量 HARQ 重传。RI 的选择本质是"并行收益 vs 单流质量"的权衡,由 CQI 一起决定。

常见问题

Q:预编码和波束赋形到底什么关系,该用哪个词? A:数学上是同一操作(发射前乘加权矩阵),但工程语境不同:强调空间能量指向/对准(尤其毫米波、相控阵)时说"波束赋形";强调基带矩阵加权、多流/多用户复用、PMI 选择时说"预编码"。SU/MU-MIMO 调 PMI、秩,属于预编码;毫米波扫波束对准,属于波束赋形。

Q:为什么 FDD 必须用码本,TDD 可以不用? A:因为信道互易性。TDD 上下行同频,基站能从上行 SRS 直接测出可复用于下行的信道,当场算预编码矩阵,无需反馈;FDD 上下行频差大、互易性不成立,基站拿不到下行信道,只能靠手机测完从码本里挑一个编号(PMI)反馈回来。

Q:SU-MIMO 和 MU-MIMO 的预编码目标有什么不同? A:SU-MIMO 只服务一个用户,目标是最大化自身容量,用 SVD 把信道对角化成并行管道、注水分配功率即可;MU-MIMO 要同时服务多用户,目标变成"自身信号强 + 用户间干扰小",因此用 ZF(强制清零干扰)、MMSE(折中)这类以 $\mathbf{H}\mathbf{F}\approx\mathbf{I}$ 为目标的算法。

Q:PMI/RI/CQI 三者是什么关系? A:它们是闭环预编码的反馈三件套:RI 决定开几条并行管道(用几层),PMI 决定每条管道用什么预编码矩阵(码本里的编号),CQI 反映预编码后的等效信道质量(决定调制编码阶数)。基站综合三者决定怎么传。

Q:Massive MIMO 为什么反而能用最简单的预编码? A:因为信道硬化——天线数趋于无穷时,用户信道向量渐近正交,本需要 ZF 去清的干扰自动趋零,于是最简单的共轭预编码($\mathbf{F}=\mathbf{H}^H$)就接近最优,连矩阵求逆都省了。天线越多,预编码越"返璞归真"。

参考来源

  1. Singular Value Decomposition (SVD) — Wireless Pi — SVD 在无线系统中的应用教程,特征模分解与并行管道直觉。
  2. 5G NR CSI-RS Codebook — ShareTechnote — 5G 码本结构与 Type I/Type II 演进,码本预编码工程参考。
  3. Precoding, Codebook vs Non-codebook based MIMO — Wireless Theory — 码本预编码与非码本预编码的对比,FDD/TDD 差异。

本文由「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学通信知识星球海报-扫码加入