<!-- title: 信号处理三剑客：FFT、LDPC与Polar码 -->

# 信号处理三剑客：FFT、LDPC与Polar码原理全图解

> 如果把5G无线通信比作一条高速公路，那么FFT就是铺路的压路机，LDPC码是运货卡车的安全气囊，Polar码则是交通信号灯的防呆设计。三者各司其职，缺一不可。

## 一、为什么通信工程师必须理解信号处理？

很多1-3年经验的通信工程师，日常工作可能都在配置参数、抓包分析、处理工单。但当你遇到这些问题时：

- 为什么OFDM子载波数必须是2的幂次（512、1024、2048）？
- 为什么5G数据信道用LDPC，控制信道用Polar，不能反过来？
- 为什么接收端信号处理后BLER居高不下，调了半天参数也没用？

答案都藏在**信号处理的基本原理**里。理解了底层逻辑，调试时才能有的放矢，而不是靠"经验值"盲调。

本文将从三个核心模块展开：

| 模块 | 核心问题 | 在5G中的角色 |
|------|----------|-------------|
| FFT/IFFT | 如何高效地在时域和频域之间转换？ | OFDM调制/解调的数学引擎 |
| LDPC码 | 如何在高速数据传输中纠错？ | 数据信道（PDSCH/PUSCH）的编码方案 |
| Polar码 | 如何在短块长控制信息中保证可靠传输？ | 控制信道（PDCCH/PUCCH）的编码方案 |

---

## 二、FFT/IFFT：通信系统中最频繁的数学运算

### 2.1 从一个生活类比说起

想象你走进一家冰淇淋店，面前有100种口味。老板需要知道每种口味还剩多少库存。

**笨办法（DFT）**：每种口味逐一清点，100种口味需要检查100×100=10000次——因为每种口味的库存可能和所有其他口味有关联。

**聪明办法（FFT）**：老板发现口味有规律——水果类、巧克力类、坚果类各自独立。先按大类分组清点，再逐层细化。利用这种结构，100种口味只需要约100×6.6=660次操作就能完成。

这就是FFT的核心思想：**利用数据的内在结构（周期性、对称性），把计算量从O(N²)降到O(N log N)**。

### 2.2 DFT的数学定义与直觉

离散傅里叶变换（DFT）的公式：

$$X[k] = \sum_{n=0}^{N-1} x[n] \cdot e^{-j\frac{2\pi}{N}nk}, \quad k = 0, 1, \ldots, N-1$$

逆变换（IDFT）：

$$x[n] = \frac{1}{N}\sum_{k=0}^{N-1} X[k] \cdot e^{j\frac{2\pi}{N}nk}, \quad n = 0, 1, \ldots, N-1$$

**直觉解读**：
- DFT是在问："我这个时域信号x[n]里，含有多少频率为k的分量？"
- 每一个X[k]就是一个频率分量的"身份证"，包含幅度和相位信息
- $e^{-j\frac{2\pi}{N}nk}$ 就是那个"探测探针"，在不同的时间点n去"感受"频率k的存在

### 2.3 蝶形运算：FFT的灵魂

FFT之所以快，靠的是**蝶形运算（Butterfly Operation）**。这是整个算法的最小计算单元。

一个基本的2点蝶形运算：

```
输入A ──────┬────── 输出: A + W·B
             │
            ×W（旋转因子）
             │
输入B ──────┴────── 输出: A - W·B
```

其中旋转因子 $W_N^k = e^{-j2\pi k/N}$。

**为什么叫"蝶形"？** 因为在信号流图中，两条线交叉后又分开，形状像蝴蝶展翅。

```mermaid
graph LR
    subgraph "蝶形运算基本单元"
        A["输入 A"] --> ADD["⊕"]
        A --> SUB["⊖"]
        B["输入 B"] --> MUL["× W_N^k"]
        MUL --> ADD
        MUL --> SUB
        ADD --> OUT1["输出: A + W·B"]
        SUB --> OUT2["输出: A - W·B"]
    end

    style A fill:#e1f5fe
    style B fill:#e1f5fe
    style OUT1 fill:#c8e6c9
    style OUT2 fill:#c8e6c9
    style MUL fill:#fff9c4
```

**蝶形运算的关键性质**：
- 每个蝶形只需要**1次复数乘法**和**2次复数加法**
- 可以**原地计算（In-place）**：输出直接覆盖输入，不需要额外存储空间
- 多级蝶形串联，级联完成全部N点变换

### 2.4 FFT的完整计算流程（以N=8为例）

N=8的FFT需要 $\log_2(8) = 3$ 级蝶形运算，每级4个蝶形：

```mermaid
graph TD
    subgraph "第1级"
        x0["x(0)"] --> b1a["蝶形"]
        x4["x(4)"] --> b1a
        x2["x(2)"] --> b1b["蝶形"]
        x6["x(6)"] --> b1b
        x1["x(1)"] --> b1c["蝶形"]
        x5["x(5)"] --> b1c
        x3["x(3)"] --> b1d["蝶形"]
        x7["x(7)"] --> b1d
    end

    subgraph "第2级"
        b1a --> b2a["蝶形"]
        b1b --> b2a
        b1c --> b2b["蝶形"]
        b1d --> b2b
        b1a --> b2c["蝶形"]
        b1b --> b2c
        b1c --> b2d["蝶形"]
        b1d --> b2d
    end

    subgraph "第3级"
        b2a --> b3a["蝶形 → X(0)"]
        b2b --> b3a
        b2a --> b3b["蝶形 → X(4)"]
        b2b --> b3b
        b2c --> b3c["蝶形 → X(2)"]
        b2d --> b3c
        b2c --> b3d["蝶形 → X(6)"]
        b2d --> b3d
    end

    style x0 fill:#bbdefb
    style x4 fill:#bbdefb
    style x2 fill:#bbdefb
    style x6 fill:#bbdefb
    style x1 fill:#bbdefb
    style x5 fill:#bbdefb
    style x3 fill:#bbdefb
    style x7 fill:#bbdefb
```

**注意**：输入序列需要先做**比特逆序（Bit Reversal）**排列。比如x(0)→位置0(000)，x(4)→位置1(100→001)，x(2)→位置2(010)，x(6)→位置3(110→011)……

### 2.5 计算量对比：为什么FFT是革命性的

| 参数 | DFT | FFT (基2) |
|------|-----|-----------|
| 复数乘法次数 | N² | $\frac{N}{2}\log_2 N$ |
| N=1024时 | 1,048,576次 | 5,120次 |
| **加速比** | 1× | **~200×** |
| N=2048时 | 4,194,304次 | 11,264次 |
| **加速比** | 1× | **~370×** |

在5G NR中，一个OFDM符号的子载波数可达4096个（FR1最大FFT size），如果用DFT，每次变换需要1600万次乘法；用FFT只需要约5万次。**这就是为什么OFDM在4G时代之前不敢用，直到DSP芯片能快速做FFT后才大规模商用。**

### 2.6 FFT/IFFT在OFDM中的角色

```mermaid
flowchart TD
    subgraph "发送端"
        BITS["数据比特"] --> QAM["QAM映射"]
        QAM --> S2P["串并转换\nN路并行"]
        S2P --> IFFT["IFFT\nN点逆FFT"]
        IFFT --> ADDCP["加循环前缀CP"]
        ADDCP --> DAC["DAC → 射频发射"]
    end

    subgraph "无线信道"
        CHANNEL["多径衰落\n噪声干扰"]
    end

    subgraph "接收端"
        ADC["射频 → ADC"] --> REMCP["去循环前缀CP"]
        REMCP --> FFT["FFT\nN点FFT"]
        FFT --> P2S["并串转换"]
        P2S --> DEMAP["QAM解映射"]
        DEMAP --> DECODE["信道解码"]
        DECODE --> RBITS["恢复数据比特"]
    end

    DAC --> CHANNEL
    CHANNEL --> ADC

    style IFFT fill:#ffcdd2
    style FFT fill:#c8e6c9
```

**关键理解**：
- **发送端用IFFT**：把频域的N个QAM符号"合成"成一个时域OFDM符号。一个IFFT运算替代了N个独立振荡器——用数学运算取代了硬件。
- **接收端用FFT**：把收到的时域OFDM符号"分解"回N个频域子载波数据。
- 之所以用IFFT发射、FFT接收，是因为IFFT把频域→时域（合成波形），FFT把时域→频域（分析频率成分），方向恰好相反。

### 2.7 实战连接

**调试OFDM信号时**：
- 如果在频域看到某些子载波功率异常偏低，可能是FFT窗口偏移导致采样点对不齐
- 如果时域波形PAPR（峰均比）过高，IFFT输出会出现大幅度的峰值——这是OFDM的固有缺陷
- 5G NR FR1常用FFT size：4096（最大带宽100MHz），FR2可达8192

---

## 三、LDPC码：数据信道的守护者

### 3.1 为什么要信道编码？

无线信道不靠谱——噪声、干扰、衰落随时可能把你的"0"翻成"1"。信道编码的本质就是**给数据加冗余**，让接收端即使收到部分错误，也能纠正回来。

打个比方：你口述一个电话号码"13812345678"，怕对方听错，你会说"138，一二三八的1三八，12345678"。这个重复和强调就是"冗余"。信道编码做的就是这件事，只不过用数学方法更高效。

### 3.2 LDPC码的核心思想

LDPC（Low-Density Parity-Check，低密度奇偶校验码）由Robert Gallager在1962年提出，但直到1990年代才被"重新发现"并广泛应用。

**"低密度"是什么意思？** 校验矩阵H中绝大多数元素是0，只有极少数是1。

举个4×8的小例子：

$$H = \begin{bmatrix} 1 & 1 & 0 & 1 & 0 & 0 & 0 & 0 \\ 0 & 1 & 1 & 0 & 1 & 0 & 0 & 0 \\ 0 & 0 & 0 & 1 & 0 & 1 & 1 & 0 \\ 1 & 0 & 1 & 0 & 0 & 0 & 0 & 1 \end{bmatrix}$$

这个矩阵中，32个元素只有10个是1——密度很低。**正是这种稀疏性让LDPC可以高效解码。**

### 3.3 Tanner图：LDPC的可视化表示

LDPC码最直观的理解方式是通过**Tanner图**——一种二分图，左边是变量节点（数据位），右边是校验节点（约束方程），边连接参与同一校验的数据位。

```mermaid
graph LR
    subgraph "变量节点（数据位）"
        v1["v₁"]
        v2["v₂"]
        v3["v₃"]
        v4["v₄"]
        v5["v₅"]
        v6["v₆"]
        v7["v₇"]
        v8["v₈"]
    end

    subgraph "校验节点（约束方程）"
        c1["c₁"]
        c2["c₂"]
        c3["c₃"]
        c4["c₄"]
    end

    v1 --- c1
    v2 --- c1
    v4 --- c1
    v2 --- c2
    v3 --- c2
    v5 --- c2
    v4 --- c3
    v6 --- c3
    v7 --- c3
    v1 --- c4
    v3 --- c4
    v8 --- c4

    style v1 fill:#bbdefb
    style v2 fill:#bbdefb
    style v3 fill:#bbdefb
    style v4 fill:#bbdefb
    style v5 fill:#bbdefb
    style v6 fill:#bbdefb
    style v7 fill:#bbdefb
    style v8 fill:#bbdefb
    style c1 fill:#ffcdd2
    style c2 fill:#ffcdd2
    style c3 fill:#ffcdd2
    style c4 fill:#ffcdd2
```

### 3.4 LDPC解码：消息传递算法

LDPC的解码不像传统编码那样"解方程"，而是在Tanner图上做**消息传递（Message Passing）**——也叫置信传播（Belief Propagation）算法。

**通俗类比**：想象一个侦探团队在破案。每个变量节点是一个"嫌疑人"（不确定自己是否有罪），每个校验节点是一个"侦探"（根据线索判断嫌疑人是否有罪）。他们反复交换信息：

1. **变量→校验**："根据信道接收值，我有多大概率是0或1？"
2. **校验→变量**："根据其他嫌疑人的状态，你这个位置应该是0还是1？"
3. 反复迭代几次，最终大家的判断趋于一致

这个过程在数学上是**迭代计算每个比特的后验概率**，直到收敛或达到最大迭代次数。

### 3.5 5G NR中LDPC的设计特点

5G NR采用了**准循环LDPC（QC-LDPC）**编码，具有以下特点：

| 特性 | 说明 |
|------|------|
| **两张基本图（BG）** | BG1用于大块/高码率，BG2用于小块/低码率 |
| **提升（Lifting）** | 将小的基础矩阵扩展为大的校验矩阵，便于硬件并行实现 |
| **速率匹配** | 通过打孔（Puncturing）和缩短（Shortening）支持任意码率 |
| **支持的最大码块** | 8448 bits（BG1）/ 3840 bits（BG2） |

**为什么LDPC适合数据信道？**
- 数据信道传输的是大块数据（几十到几千字节），LDPC在**长码块**时性能极佳
- LDPC解码器天然支持**高度并行化**，能满足5G eMBB场景多Gbps吞吐量需求
- 错误平层（Error Floor）极低，可达 $10^{-15}$ 级别

---

## 四、Polar码：控制信道的精准守护

### 4.1 Polar码的诞生——一个优雅的理论突破

2009年，土耳其裔学者Erdal Arıkan发表了论文《Channel Polarization》，证明了一种全新的编码方法可以达到**信道容量极限**——这是信息论领域几十年来追求的圣杯。

**什么是信道容量？** 香农在1948年指出：任何信道都有一个最大传输速率，超过这个速率就无法可靠通信。但香农只证明了这个极限存在，没有给出具体怎么构造编码来达到它。**Polar码是第一种被严格证明能达到信道容量的编码方案。**

### 4.2 信道极化：Polar码的核心原理

**极化（Polarization）** 是理解Polar码的关键。想象你有一组N个质量相同的信道。通过一种特定的变换，这些信道会发生"极化"——有的变成**完美信道**（容量→1，几乎不犯错），有的变成**完全无用信道**（容量→0，信息全丢）。

```
极化前：  [0.5] [0.5] [0.5] [0.5] [0.5] [0.5] [0.5] [0.5]
          ↓ 信道极化变换 ↓
极化后：  [1.0] [1.0] [0.9] [0.95] [0.2] [0.1] [0.0] [0.0]
           ↑好信道↑          ↑还行↑     ↑差信道↑    ↑废了↑
```

**核心策略**：把真正要传的信息放在好信道上，把固定的已知比特（冻结位，通常是0）放在差信道上。

### 4.3 Polar编码的数学描述

Polar码的核心是**生成矩阵**，通过Kronecker积构造：

$$G_N = \begin{bmatrix} 1 & 0 \\ 1 & 1 \end{bmatrix}^{\otimes n}$$

其中 $\otimes n$ 表示n次Kronecker积，$N = 2^n$。

以N=4（n=2）为例：

$$G_4 = \begin{bmatrix} 1 & 0 \\ 1 & 1 \end{bmatrix}^{\otimes 2} = \begin{bmatrix} 1 & 0 & 0 & 0 \\ 1 & 1 & 0 & 0 \\ 1 & 0 & 1 & 0 \\ 1 & 1 & 1 & 1 \end{bmatrix}$$

编码过程就是简单的矩阵乘法：$x = u \cdot G_N$

其中 $u$ 是输入向量，前 $K$ 位放信息比特，后 $N-K$ 位放冻结比特（0）。

### 4.4 极化的可视化（N=8的例子）

```mermaid
graph TD
    subgraph "极化前：8个等质量信道"
        ch1["信道1\n容量≈0.5"]
        ch2["信道2\n容量≈0.5"]
        ch3["信道3\n容量≈0.5"]
        ch4["信道4\n容量≈0.5"]
        ch5["信道5\n容量≈0.5"]
        ch6["信道6\n容量≈0.5"]
        ch7["信道7\n容量≈0.5"]
        ch8["信道8\n容量≈0.5"]
    end

    subgraph "极化变换"
        POLAR["信道极化\nG_N = F⊗n"]
    end

    subgraph "极化后：信道分化"
        good1["信道1\n容量≈1.0 ✅"]
        good2["信道2\n容量≈1.0 ✅"]
        good3["信道3\n容量≈0.9 ✅"]
        mid["信道4\n容量≈0.7 ⚠️"]
        bad1["信道5\n容量≈0.3 ⚠️"]
        bad2["信道6\n容量≈0.1 ❌"]
        bad3["信道7\n容量≈0.0 ❌"]
        bad4["信道8\n容量≈0.0 ❌"]
    end

    ch1 --> POLAR
    ch2 --> POLAR
    ch3 --> POLAR
    ch4 --> POLAR
    ch5 --> POLAR
    ch6 --> POLAR
    ch7 --> POLAR
    ch8 --> POLAR

    POLAR --> good1
    POLAR --> good2
    POLAR --> good3
    POLAR --> mid
    POLAR --> bad1
    POLAR --> bad2
    POLAR --> bad3
    POLAR --> bad4

    good1 -.- info1["→ 放信息比特"]
    good2 -.- info2["→ 放信息比特"]
    good3 -.- info3["→ 放信息比特"]
    bad2 -.- frozen1["→ 放冻结比特(0)"]
    bad3 -.- frozen2["→ 放冻结比特(0)"]
    bad4 -.- frozen3["→ 放冻结比特(0)"]

    style good1 fill:#c8e6c9
    style good2 fill:#c8e6c9
    style good3 fill:#c8e6c9
    style bad2 fill:#ffcdd2
    style bad3 fill:#ffcdd2
    style bad4 fill:#ffcdd2
    style mid fill:#fff9c4
    style bad1 fill:#fff9c4
```

### 4.5 Polar解码算法

Polar码的解码主要有以下几种：

| 解码算法 | 复杂度 | 性能 | 适用场景 |
|----------|--------|------|---------|
| **SC（逐次消除）** | O(N log N) | 中等 | 理论分析、低复杂度场景 |
| **SCL（列表消除）** | O(L·N log N) | 好 | L为列表大小（8、16、32） |
| **CA-SCL（CRC辅助列表）** | O(L·N log N) | 优秀 | **5G NR实际采用** |

**CA-SCL解码的巧妙之处**：先用CRC校验码对信息比特做一次"封印"，解码时从L条候选路径中选CRC校验通过的那条。这相当于给Polar码加了一层"保底机制"——即使Polar码本身性能有波动，CRC也能帮你选出正确答案。

### 4.6 为什么5G控制信道选Polar码？

```mermaid
flowchart TD
    Q["5G控制信道特点"] --> A["短块长\n(20-140 bits)"]
    Q --> B["低码率\n(1/8 ~ 1/2)"]
    Q --> C["极低BLER要求\n(<1%)"]

    A --> D{哪种编码最适合？}
    B --> D
    C --> D

    D -->|"短块长表现"| E["Polar码 ✅\n短块长时BLER最优"]
    D -->|"短块长表现"| F["LDPC码 ❌\n短块长性能下降明显"]
    D -->|"短块长表现"| G["Turbo码 ❌\n复杂度高且性能不如Polar"]

    E --> H["5G NR决策：\nPolar码 → 控制信道\nLDPC码 → 数据信道"]

    style E fill:#c8e6c9
    style F fill:#ffcdd2
    style G fill:#ffcdd2
    style H fill:#e1f5fe
```

**核心原因**：
- 控制信息（DCI/UCI）通常只有20-140比特，Polar码在**短码块**时性能明显优于LDPC
- Polar码的编码复杂度只有O(N log N)，非常适合控制信道频繁的编解码需求
- Polar码的理论最优性（可达信道容量）给系统设计提供了性能保证

---

## 五、三大技术的协同：5G物理层信号处理全流程

### 5.1 完整发送链路

```mermaid
flowchart TD
    subgraph "1. 信道编码"
        INFO["原始信息比特"] --> CRC_ADD["加CRC校验"]
        CRC_ADD --> CODE_SEL{"信道类型？"}
        CODE_SEL -->|"数据信道"| LDPC_ENC["LDPC编码\n(BG1/BG2)"]
        CODE_SEL -->|"控制信道"| POLAR_ENC["Polar编码\n(CA-SCL)"]
    end

    subgraph "2. 速率匹配与调制"
        LDPC_ENC --> RM1["速率匹配"]
        POLAR_ENC --> RM2["速率匹配"]
        RM1 --> QAM["QAM映射\n(QPSK/16QAM/64QAM/256QAM)"]
        RM2 --> QAM
    end

    subgraph "3. OFDM调制"
        QAM --> S2P["串并转换\n分到N个子载波"]
        S2P --> RE_MAP["资源映射\n(频域RE映射)"]
        RE_MAP --> IFFT_MOD["IFFT\n生成时域OFDM符号"]
        IFFT_MOD --> CP["加循环前缀CP"]
        CP --> TX["射频发射"]
    end

    style LDPC_ENC fill:#ffcdd2
    style POLAR_ENC fill:#c8e6c9
    style IFFT_MOD fill:#bbdefb
```

### 5.2 三者的分工逻辑

| 阶段 | 技术模块 | 解决的问题 | 类比 |
|------|---------|-----------|------|
| **频域↔时域转换** | FFT/IFFT | 高效实现多载波调制/解调 | 铺路——建立传输通道 |
| **数据纠错** | LDPC码 | 大块数据在噪声信道中的可靠传输 | 卡车安全气囊——保护大批货物 |
| **控制纠错** | Polar码 | 短块控制信息的精准传输 | 信号灯防呆——确保指令无误 |

### 5.3 5G NR vs 4G LTE 编码方案对比

| 对比项 | 4G LTE | 5G NR |
|--------|---------|-------|
| 数据信道编码 | Turbo码 | **LDPC码** |
| 控制信道编码 | Tail-biting卷积码 | **Polar码** |
| 最大码块大小 | 6144 bits | 8448 bits (BG1) |
| 解码吞吐量 | ~1 Gbps | **>10 Gbps** |
| 目标BLER | 10⁻⁶ | 10⁻⁵ (数据) / 10⁻² (控制) |

**为什么4G的Turbo码被淘汰了？**
- Turbo码在高吞吐量下解码复杂度太高，难以满足5G eMBB的10Gbps需求
- Turbo码存在"水床效应"——性能优化到一个点后很难再提升
- LDPC和Polar的组合在各个方面都优于Turbo+卷积码的组合

---

## 六、实战调试指南

### 6.1 FFT/IFFT相关调试场景

**场景1：OFDM频偏补偿**
- 现象：频域子载波上出现"倾斜"的幅度谱
- 原因：FFT窗口起点偏移，等效于时域引入了相位旋转
- 解决：利用CP做 fine timing adjustment，或利用导频做频偏估计和补偿

**场景2：PAPR过高导致功放非线性**
- 现象：EVM（误差矢量幅度）恶化，频域出现带外辐射
- 原因：IFFT后多个子载波同相叠加产生高峰值
- 解决：5G NR支持DMRS和PTRS（相位跟踪参考信号）来辅助补偿

### 6.2 LDPC相关调试场景

**场景3：高码率下BLER偏高**
- 检查BG选择：码块>3824 bits时必须用BG1，否则性能下降
- 检查速率匹配参数：打孔过多会导致解码失败
- 检查迭代次数：LDPC通常8-20次迭代，太少会性能差，太多会增加时延

**场景4：解码不收敛**
- 检查信道估计质量：LDPC解码对信道估计误差很敏感
- 检查量化精度：硬件实现中，消息传递的定点量化位宽不足会导致性能劣化

### 6.3 Polar码相关调试场景

**场景5：DCI解码失败**
- 检查列表大小L：5G NR终端通常支持L=8的CA-SCL，确保参数配置正确
- 检查冻结位集合：冻结位位置由信道质量决定（通过信令或预定义表），配置错误会全盘失败
- 检查CRC：CA-SCL依赖CRC做最终路径选择，CRC多项式必须与标准一致

---

## 常见问题

**Q1: FFT和IFFT有什么区别？发送端为什么用IFFT而不是FFT？**
A: FFT是时域→频域（分析），IFFT是频域→时域（合成）。在OFDM系统中，发送端需要把频域的多个QAM符号合成一个时域波形发射出去，所以用IFFT（频域→时域）。接收端需要把时域波形分解回各子载波的频域数据，所以用FFT（时域→频域）。记住口诀：**"IFFT发、FFT收"**。

**Q2: LDPC码和Polar码能不能互换使用？**
A: 理论上可以，但性能会很差。LDPC在短码块（<200 bits）时错误平层较高，不适合控制信道；Polar码在长码块时解码复杂度急剧上升，不适合高速数据信道。5G NR的分工是经过大量仿真评估后的最优选择。

**Q3: 为什么5G不用Turbo码了？**
A: 三个原因：(1) Turbo码的串行解码结构难以并行化，达不到5G的吞吐量要求；(2) LDPC在长码、Polar在短码上分别优于Turbo码；(3) Turbo码的解码复杂度约为O(N·iter·states)，随块长增长更快。LDPC的并行解码架构更适合硬件实现。

**Q4: Polar码的"极化"是物理过程还是数学变换？**
A: 纯数学变换。通过对输入比特做特定的线性变换（Kronecker积），使得等效的"子信道"出现容量分化。好的子信道传输信息比特，差的子信道传固定的冻结比特。这个过程完全在编解码器内部完成，与物理信道无关。

**Q5: 实际基带芯片中FFT点数是多少？**
A: 5G NR FR1（Sub-6GHz）典型FFT size为4096（支持100MHz带宽，子载波间隔30kHz时）；FR2（毫米波）可达8192。但实际使用时，并非所有子载波都承载数据——边缘子载波作为保护带留空，中间部分用于数据和控制。有效子载波数通常为FFT size的60%-80%。

---

## 参考来源

1. [LDPC与Polar码在5G中的关键角色与实战对比 - CSDN博客](https://blog.csdn.net/weixin_42565652/article/details/159848501) — 详细对比两种编码方案在5G NR中的应用
3. [彻底搞懂快速傅里叶变换FFT--蝴蝶操作 - 知乎](https://zhuanlan.zhihu.com/p/473327863) — 蝶形运算的通俗图解
5. [5G技术详解：LDPC与Polar码编码、多址与调制方法 - CSDN博客](https://blog.csdn.net/2301_79742410/article/details/134148101) — 5G NR编码技术的工程实践角度解析

---

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