OFDM正交性详解:从数学原理到Matlab仿真实践
发布时间:2026/9/9 2:29:55来源:尧图网络
干通信这行这么多年每次和新同事聊OFDM十有八九会卡在同一个地方正交性到底是什么。很多人能背下结论——子载波间隔等于符号周期的倒数频谱上互相重叠也不干扰——但真要他们解释背后的数学原理或者动手搭个Matlab仿真验证一下就含糊其辞了。这篇文章我打算用一套组合拳把它彻底讲透先建立物理直觉再严格推公式最后用Matlab把每个结论都跑一遍。适合正在啃通信原理的学生、刚入行做物理层算法的工程师还有那些被“正交性”折磨过的硬件工程师。OFDM这技术太重要了4G、5G、WiFi 6、DVB、电力线通信全是它的地盘。理解正交性不只是为了考试它直接决定你以后能不能看懂OFDM接收机里的同步、信道估计、均衡这些模块的设计逻辑。搞懂这一篇后面的路会顺很多。1. 先建立画面感OFDM到底在干什么1.1 从FDM到OFDM频谱利用率是怎么被逼出来的要理解OFDM得先回头看看它爹FDM频分复用。传统FDM的做法特别直白每个用户占一段独立的频带段与段之间留出保护间隔就像高速公路上的车道中间用隔离带隔开。这样做的好处是简单、互不干扰坏处也很明显——频谱被浪费了一大块。后来数据速率要求越来越高带宽成了稀缺资源工程师就开始琢磨能不能让相邻的子信道贴得近一点甚至直接叠在一起答案是可以但有个前提——必须保证各个子信道在数学上“正交”。这就是OFDM的核心思想用正交的子载波替代传统频分复用的隔离带在不干扰的前提下把频谱利用率拉到极限。OFDM的直观理解是“通过多个窄带子载波并行传输数据”。把一个高速串行数据流拆分成N路低速并行数据流分别调制到N个子载波上同时发送。每个子载波上的符号速率只有原来的1/N符号周期拉长了N倍抗多径能力也相应增强。这个“并行化”的思路本身不复杂真正精妙的是子载波之间的正交设计。1.2 正交性到底是什么一个很像“空间坐标”的概念我给学生讲正交性的时候最喜欢用三维坐标来打比方。你知道在三维空间里x轴、y轴、z轴是互相垂直的。一个点投影到x轴上得到一个分量投影到y轴上得到另一个分量它们互不干扰。不管这个点在哪儿你永远可以把它拆成三个独立的分量而且可以随时通过投影把它还原出来。OFDM里的正交性本质上就是这个二维/三维空间概念的推广——只不过空间维度不再是3而是几十、几百甚至上千而且坐标轴不再是直线而是定义在一个符号周期内的正弦波或复指数函数。每一路子载波就是一根“坐标轴”在符号周期T内任意两根不同的“坐标轴”内积为零同一根“坐标轴”的内积为常数。发送端把数据投影到这些坐标轴上接收端再用同样的坐标轴去投影解调就能完美还原出每一路数据。这个类比帮很多人越过了第一道坎接下来就要动真格的了。正交性的数学形式到底长什么样频率间隔和符号周期之间有什么必然联系这是下一节的正题。2. 数学推导Δf 1/T 是怎么来的2.1 内积把函数也看成向量说完几何直觉现在来讲数学。两个函数在区间 [0, T] 上的内积定义是这样的[ \langle f(t), g(t) \rangle \int_{0}^{T} f(t) \cdot g^*(t) , dt ]这里的星号表示共轭。如果是实信号比如正弦函数就不用管共轭这件事直接把两个函数相乘再积分就行。这个“相乘再积分”的操作就是前面说的“投影”。结果为零就说明这两个函数在区间上正交就像两根坐标轴垂直一样。我们平时用的内积概念是从有限维向量推广来的。两个向量 a 和 b 正交意味着它们对应分量乘积之和为零。函数版本的灵魂也是一模一样的只是把求和变成了积分把离散的分量变成了连续的时间函数。所以后面推导正交条件的时候本质上就是在算一系列积分看它们在什么条件下等于零。2.2 正弦函数正交条件的严格推导OFDM子载波在最基础的形式下是正弦函数。考虑两个频率为 fm 和 fn 的正弦波在符号周期 T 内做内积运算[ \int_{0}^{T} \cos(2\pi f_m t) \cdot \cos(2\pi f_n t) , dt ]利用三角函数的积化和差公式可以把它拆成两项[ \int_{0}^{T} \frac{1}{2} \left[ \cos(2\pi (f_m - f_n) t) \cos(2\pi (f_m f_n) t) \right] dt ]第一项是差频项第二项是和频项。现在关注第一项令 Δf fm - fn计算[ \int_{0}^{T} \cos(2\pi \Delta f \cdot t) , dt \frac{\sin(2\pi \Delta f \cdot T)}{2\pi \Delta f} ]这个式子什么时候等于零当 Δf · T 是一个非零整数的时候sin(2π × 整数) 0所以积分结果为零。也就是说只要子载波之间的频率差满足[ \Delta f \frac{k}{T}, k 1, 2, 3, \dots ]这两个子载波就在区间 [0, T] 上正交。最小正频率间隔就是 k 1 时的情况Δf 1/T。这就是OFDM最核心的公式所有工程参数都围绕它展开。至于第二项和频项 cos(2π(fm fn)t)在 fm fn 比较大的情况下它在 [0, T] 上的积分会趋近于零对正交条件的约束可以忽略所以核心约束就落在差频项上。2.3 复指数形式更优雅也更接近工程实现实际OFDM系统里更常用复指数形式而不是余弦函数因为复数运算在数学上更简洁而且能够通过IFFT一次性完成所有子载波的调制。考虑两个复指数信号 ej2πfmt 和 ej2πfnt在 [0, T] 上做内积[ \int_{0}^{T} e^{j2\pi f_m t} \cdot \left( e^{j2\pi f_n t} \right)^* dt \int_{0}^{T} e^{j2\pi (f_m - f_n) t} , dt ]计算这个积分[ \frac{e^{j2\pi (f_m - f_n) T} - 1}{j2\pi (f_m - f_n)} ]当 fm - fn k/T 时有 (fm - fn)T k此时 ej2πk 1分子变成 1 - 1 0。所以当子载波间隔是符号周期倒数的整数倍时积分结果为零当 fm fn 时积分结果等于 T。这个结论和三角函数情况完全一致但推导过程更加简洁。这里还有个细节值得注意复指数形式下的“正交”其实包含两个方向——正频率和负频率。实际系统里一般用复数基带信号建模子载波位置关于零频对称接收端通过下变频把射频信号搬回基带再按照正交性做解调。这个流程在后面的Matlab仿真里会完整体现。2.4 从连续到离散为什么用IFFT就能完成OFDM调制连续域里的结论已经到手了但工程实现不能靠一堆模拟振荡器。好在离散傅里叶变换提供了完美工具。这里需要仔细看采样点上的公式变形。OFDM符号的时域表达式可以写成[ s(t) \sum_{k0}^{N-1} X_k \cdot e^{j2\pi k \Delta f \cdot t}, \quad 0 \le t T ]其中 Xk 是第 k 个子载波上携带的调制符号QPSK、16QAM等等。把时间离散化令 t n·T/Nn 0, 1, ..., N-1代入得到[ s[n] \sum_{k0}^{N-1} X_k \cdot e^{j2\pi k n / N} ]这正好是N点IDFT的定义式差一个归一化系数。所以OFDM调制在离散域可以等价为IFFTOFDM解调等价为FFT。这是一个关键飞跃——把N路并行的模拟调制器变成了一次FFT运算硬件复杂度骤降OFDM才真正有了大规模商业化的可能。3. 物理意义频谱重叠却不干扰的“魔术”3.1 频域视角sinc函数的零点刚好对准邻居的峰值说完公式现在把频域的物理图像画清楚。每个OFDM子载波在矩形符号窗口下频谱形状是sinc函数也就是 sin(πx)/(πx) 的形式。这个sinc函数的零点出现在整数倍子载波间隔的位置上。当所有子载波叠加在一起时频谱看起来就像是很多sinc函数互相重叠。但关键是在某个子载波的峰值位置上其他所有子载波的频谱贡献恰好为零。这就像菜市场里每个人在特定时间点轮流喊话虽然声音在传播路径上混在一起但只要在约定时刻去听只有一个人的声音最大其他人都正好处在安静期。接收端解调时对接收信号乘以本地产生的某一子载波再在符号周期内积分。由于其他子载波与本地子载波正交积分结果里它们的分量全部归零只剩下目标子载波携带的数据。这就是“重叠但不干扰”的物理机制。3.2 时域视角一个符号周期内必须包含整数个周期频域的正交条件等价于时域的一个朴素事实在符号周期 T 内任意两个子载波之间的周期差必须是整数个周期。更直白地说每个子载波在 T 内完成整数次完整振荡且在 T 的起点和终点的相位一致。这意味着符号的边界处所有子载波的函数值在某种意义下“闭合”了。如果子载波间隔不满足 Δf 1/T符号边界处相位就会突变导致子载波之间产生干扰。这个时域解释对工程调试特别有帮助——看到频谱泄漏或者子载波间干扰的问题时第一步该怀疑的就是符号长度和子载波间隔是否严格匹配。3.3 用“钥匙与锁”理解接收端的解调机制解调端做FFT可以理解为一套“钥匙与锁”的系统。每把钥匙对应一个子载波频率每把锁对应一个数据符号。接收端用 k 号钥匙频率 fk 的本地振荡器去乘接收信号再把结果在符合周期内做积分就能把“锁在”k号子载波上的数据提取出来。为什么能提取出来因为其他子载波和这把钥匙不正交积分后归零了剩下的就是 Xk 和它的能量。如果子载波之间失去正交性——比如接收端频率偏差、多普勒效应、或者符号定时没有对齐——那“钥匙”就会同时打开好几把“锁”数据就混在一起了。这个视角对后面理解同步算法的意义很有帮助。4. 从公式到工程IFFT、循环前缀和正交性的保护4.1 模拟实现的噩梦与DFT的降临再强调一次OFDM不是新概念早在20世纪50年代末就有军事通信系统用类似思路了。但早年实现OFDM需要一大堆正弦波发生器、混频器和滤波器每个子载波一套设备。子载波数量稍微一多设备复杂度就爆炸了。到了1971年Weinstein 和 Ebert 提出用离散傅里叶变换DFT来实现OFDM的调制和解调。这个建议在当时听起来像天方夜谭——DFT的计算复杂度是 O(N²)N 一大根本算不动。真正让OFDM走出实验室的是 1980 年代库利和图基提出的快速傅里叶变换FFT算法复杂度降到 O(N log N)N64、128、1024这些规模才变得现实。到今天连WiFi里256点甚至1024点的FFT都能在毫瓦级功耗下完成OFDM才有了遍地开花的可能。4.2 循环前缀为什么不能只用零填充OFDM符号经过多径信道时一个符号的尾部会拖到下一个符号的头部产生符号间干扰ISI。如果只是简单地在符号之间插一段空白零填充确实能挡住ISI但解决不了另一个问题多径效应会破坏子载波间的正交性导致载波间干扰ICI。正确的做法是循环前缀CP把OFDM符号末尾的一段复制到符号开头。只要多径时延扩展不超过CP长度接收端丢弃CP后信道对OFDM符号的作用就从线性卷积变成了循环卷积。循环卷积在频域对应逐点相乘子载波间不会串扰正交性得以保持。而且每个子载波上的信道效应只是单个复数乘法接收端用信道估计就能轻松均衡掉。CP的长度设计是个权衡问题。CP越长抗多径能力越强但频谱效率越低因为CP本身不携带新信息。LTE中常规CP长度是符号长度的约7%WiFi的GI保护间隔标准是800纳秒还有400纳秒的短GI选项。实际系统里要根据应用场景的信道延迟扩展来选。4.3 工程系统中还有哪些因素在破坏正交性CP解决了多径带来的正交性破坏但还有其他几个现实威胁值得注意第一个是载波频率偏差CFO。收发两端本振频率不完全一致或者接收端在高速移动中受多普勒影响导致频域所有子载波发生整体偏移。偏移量哪怕只有子载波间隔的很小一部分也会让采样点上出现ICI。所以OFDM接收机必须在FFT之前做频率同步把频偏估计出来并补偿掉。第二个是符号定时偏差STO。FFT窗口如果没对准OFDM符号的起点解调出来的信号会带相位旋转。通常用循环前缀相关的算法做粗同步再用导频做精同步。第三个是相位噪声。现实振荡器不是理想的输出信号带有随机的相位抖动。相噪的频谱很宽低频频段会围绕每个子载波产生一个“裙边”同样会引入ICI。这对毫米波、太赫兹通信尤其头疼。这些工程问题和正交性直接相关理解了正交性你才能理解为什么同步算法是OFDM接收机里最关键的模块之一。5. Matlab演示把公式变成看得见的结果5.1 实验一先验证两个正弦信号的正交条件理论推导说完了现在动手验证。第一个实验最简单两个频率相差恰好为 1/T 的正弦信号算内积看是不是零。%% 实验1验证正弦信号的正交性 fs 100000; % 采样率 100 kHz足够高避免混叠 T 0.01; % 符号周期 10 ms t 0:1/fs:T-1/fs; % 时间网格注意终点要排除 delta_f 1/T; % 子载波间隔 100 Hz f1 1000; f2 f1 delta_f; % 满足正交条件 x1 sin(2*pi*f1*t); x2 sin(2*pi*f2*t); corr_value sum(x1 .* x2) / length(t); fprintf(正交条件下的内积: %.6f\n, corr_value); % 当间隔不满足条件时比如 0.7/T f3 f1 0.7*delta_f; x3 sin(2*pi*f3*t); corr_bad sum(x1 .* x3) / length(t); fprintf(非正交条件下的内积: %.6f\n, corr_bad);仿真结果会显示第一行内积在 10⁻³ 量级甚至更小第二行则会有明显非零值。这个实验直接把数学结论变成了数字很适合作为OFDM学习的第一步。这里有个小坑要提醒采样率必须让每个符号周期内采够整数个完整周期否则离散化本身就会引入误差。另外离散内积定义里的 1/N 因子不要漏掉不然值会变大。我最早写这个脚本时踩过输出结果不是零吓一跳。5.2 实验二IFFT调制 FFT解调的完整流程第二个实验模拟OFDM发射机和接收机的理想链路。用QPSK调制64个子载波IFFT生成时域符号FFT解调加噪声看误码率。%% 实验2完整OFDM链路理想信道 AWGN clear; close all; clc; N 64; % 子载波数 M 4; % QPSK numOfdmSymbols 1000; % OFDM符号数量 snrList [0:2:20]; berResults zeros(size(snrList)); for idx 1:length(snrList) snr snrList(idx); numErr 0; numBits 0; for sym 1:numOfdmSymbols bits randi([0 1], N*log2(M), 1); dataSym qammod(bits, M, InputType, bit, UnitAveragePower, true); txTime ifft(dataSym, N); % 所有子载波同时调制得到一个时域OFDM符号 % AWGN信道信噪比按每个子载波的能量计算 rxTime awgn(txTime, snr, measured); rxSym fft(rxTime, N); % 解调 rxBits qamdemod(rxSym, M, OutputType, bit, UnitAveragePower, true); numErr numErr sum(bits ~ rxBits); numBits numBits length(bits); end berResults(idx) numErr / numBits; end % 理论QPSK误码率 snrLin 10.^(snrList/10); berTheory qfunc(sqrt(2*snrLin)); figure; semilogy(snrList, berResults, o-); hold on; semilogy(snrList, berTheory, r--); xlabel(SNR (dB)); ylabel(BER); legend(OFDM/QPSK仿真, 理论QPSK); grid on; title(OFDM链路误码率性能);这个链路虽然简单但已经把OFDM的核心路径走通了调制符号 → IFFT → 信道 → FFT → 解调。仿真结果和理论误码率曲线基本吻合这就验证了“FFT IFFT 是 OFDM 正交性的高效实现”这个结论。跑这个实验时你会发现代码里没有显式写出任何“正交性验证”的逻辑但误码率曲线能和理论对得上。这正是正交性在背后起作用——如果子载波不正交误码率下不去曲线会和理论值有明显偏离。5.3 实验三无CP和多径信道下的正交性崩溃前面的AWGN信道不需要CP因为信道没有记忆效应。真正体现CP价值的场景是多径信道。下面设计一个两径信道对比加CP和不加CP的差异。%% 实验3多径信道下CP的作用 clear; close all; clc; N 64; cpLen 16; M 4; % QPSK numOfdmSymbols 500; snr 15; % dB % 构建一个两径信道第二径时延3个采样点 channel [1, 0, 0, 0.5]; % 主径 延迟3个采样的次径 bitsAll randi([0 1], N*log2(M), 1, numOfdmSymbols); for useCP [false true] numErr 0; numBits 0; for sym 1:numOfdmSymbols bits bitsAll(:,:,sym); dataSym qammod(bits, M, InputType, bit, UnitAveragePower, true); txTime ifft(dataSym, N); % 加循环前缀 if useCP txTimeCP [txTime(end-cpLen1:end); txTime]; else txTimeCP txTime; end % 过信道线性卷积 rxTimeAll conv(txTimeCP, channel, full); % 接收端去CP前的对齐 if useCP rxTimeAll rxTimeAll(1:length(txTimeCP)); % 简单截断 % 去掉CP rxTime rxTimeAll(cpLen1:end); else rxTimeAll rxTimeAll(1:length(txTimeCP)); rxTime rxTimeAll; end % 加AWGN rxTime awgn(rxTime, snr, measured); % 解调 rxSym fft(rxTime, N); rxBits qamdemod(rxSym, M, OutputType, bit, UnitAveragePower, true); numErr numErr sum(bits ~ rxBits); numBits numBits length(bits); end fprintf(useCP%d, BER %.6f\n, useCP, numErr/numBits); end这个实验的结果通常会让你印象非常深刻不加CP的情况下误码率可能在10%量级甚至更高系统完全不可用加了CP之后误码率显著下降到10⁻³甚至更低并且星座图从一团散点收敛为清晰的QPSK簇。道理不复杂多径让前一个符号的信号叠到了后一个符号上CP允许接收端把这个“污染段”丢掉。更关键的是CP让线性卷积在丢弃CP后看起来等效于循环卷积所以FFT解调时每个子载波只经历一个复数增益子载波间的正交性没有被打散。如果想细致观察可以在FFT解调前把接收信号存入工作区打印出子载波间的串扰矩阵数值上能看到不加CP时非对角线元素明显变大。5.4 实验四可视化子载波频谱重叠很多初学者第一次看到OFDM频谱图都会困惑怎么每个子载波的频谱都叠在一起这明明和教科书里的“不重叠”印象不一样。其实OFDM的频带利用率优势恰恰来自重叠关键在于有正交性兜底。下面这段代码画出子载波的频谱叠加效果%% 实验4OFDM子载波频谱图 clear; close all; clc; N 8; % 8个子载波波形看着清爽 fs 800; % 采样率 T 0.01; % 符号周期 delta_f 1/T; % 子载波间隔 100 Hz t 0:1/fs:T-1/fs; figure; hold on; colors lines(N); for k 0:N-1 % 构造单个子载波符号其余子载波为0 x cos(2*pi*(delta_f*k)*t); spec abs(fft(x, 4096)); f_axis (0:4095)/4096*fs; plot(f_axis, fftshift(spec), Color, colors(k1,:), LineWidth, 1); end xlabel(频率 (Hz)); ylabel(幅度); title(8个子载波的频谱重叠情况); xlim([0 fs/2]); grid on;运行结果会看到每个子载波的频谱主瓣互相叠加但每个主瓣的峰值点与其他主瓣的零点对齐。这就是前面说的sinc函数零点落在邻居峰值上的直观呈现。6. 常见问题与排坑实录6.1 为什么我解调出来的星座图总是旋转的如果你得到的星座点呈螺旋状分布或者整体旋转最常见的原因是符号定时偏差。FFT窗口起点没对准符号起点导致每个子载波乘了一个与频率相关的相位项。排查方法先看时域同步结果确认帧检测和符号定位是否准确。在仿真里你可以直接用导频或者已知序列来估计定时偏差并补偿。实际接收机里通常的做法是粗同步用CP相关性因为CP和符号尾部完全一样精同步再用训练序列。另外载波频偏也会让星座旋转而且旋转速率和频偏大小成正比。区别在于定时偏差产生的是每个子载波各自不同的固定相移频偏产生的是所有子载波同方向、与符号序号成线性关系的相移。画一下星座点随OFDM符号序号的变化轨迹就能快速区分。6.2 子载波数N越大越好吗不一定。N增加每个子载波带宽变窄符号周期变长抗多径和抗频率选择性衰落的能力更强。但N大了也有代价对频率偏差和相位噪声更敏感。因为子载波间隔 Δf fs/N 变小了同样的绝对频率误差在相对意义上更大ICI更严重。另外N大了FFT点数也大时延和功耗都增加。实际系统N的选择是综合权衡的结果。LTE用15kHz子载波间隔每个RB是12个子载波5G NR则支持15/30/60/120kHz多种子载波间隔高频大带宽场景用大间隔以抗相噪低频覆盖场景用小间隔以获得更长CP。6.3 采样率、子载波间隔和符号周期怎么配平这三者的关系可以归结为一句话fs N × Δf。采样率除以子载波数得到子载波间隔。N一般取2的幂以使用高效FFT。加上CP后实际符号周期 T_total T T_CP因此实际数据速率比没有CP时降低了 T/(T T_CP) 倍。我给一个实际算例LTE 20MHz带宽FFT点数1024采样率30.72MHz子载波间隔 30.72MHz/1024 30kHz按LTE标准实际是15kHz因为不是所有子载波都用而且FFT点在20MHz配置下是2048点采样率30.72MHz这里要小心——LTE 20MHz带宽的FFT点数是2048而非1024子载波间隔是 30.72MHz/2048 15kHz。这个细节很容易算错建议先确认参数定义再动手算。6.4 Matlab里有现成的OFDM工具箱要用吗Communications Toolbox里有专门的OFDM相关函数比如lteOFDMModulate、lteOFDMDemodulate还有5G工具箱的nrOFDMModulate等。做标准相关的仿真直接用这些非常方便它们内部已经帮你处理好了资源映射、CP插入、加窗、滤波等琐碎细节。但我强烈建议你至少在前期手写一遍IFFT/FFT调制解调流程。手写能让你把每个细节都过一遍脑子——数据映射、子载波分配、CP长度、接收端对齐。理解了底层逻辑后再切换到官方函数你会觉得豁然开朗因为你知道那些看起来神秘的参数到底在控制什么。我团队里招人的时候我会问一个问题让你手写OFDM调制解调器半小时能不能写完。答不上来的多半是没真正理解正交性。7. 从仿真到实测几个需要额外留神的细节7.1 频谱泄漏和窗函数的使用前面讨论都假设OFDM符号是严格的矩形窗这意味着频谱有较大的旁瓣。实际系统中射频前端滤波器会抑制带外辐射但发送端的数字域也可以主动加窗。我看到很多人在仿真里把频域截断当成理所当然但实际系统要过DAC和射频链路往往需要对每个OFDM符号的开头和结尾做“斜坡”——就是所谓的加窗或符号前缀/后缀整形。这样做能降低带外泄漏代价是略微损失有用信号能量。标准里通常允许在CP内做一部分整形而不影响解调性能。7.2 导频和信道估计正交性解放了频域均衡OFDM最让人喜欢的一个特性就是频域均衡特别简单。理想情况下每个子载波等效于一个平坦衰落信道只用乘以一个复系数就能均衡。这个复系数靠导频来估计。实际系统中导频散布在时频网格上接收端先估计导频位置的信道再通过插值获得所有数据子载波的信道值。LTE里的CRS、5G NR里的DMRS都是干这个的。理解OFDM正交性以后信道估计的问题就变成了“如何从这些分散的已知点上估计出一个二维时频的信道矩阵”是对同步和信道估计模块设计的基本认知。7.3 峰均比PAPR问题正交性的另一个代价这里必须提一嘴PAPR。由于OFDM时域信号是很多子载波的叠加幅度可能在某些时刻出现很大的峰值。这与单载波系统不同。在功率放大器线性区有限的情况下高PAPR会让功放的效率降低因为你需要更大地回退功率以避免非线性失真。这对手机这种电池敏感的终端很不友好。业界有很多PAPR抑制方案比如削波、选择性映射SLM、部分传输序列PTS、以及一些扰动方案。如果你后续做OFDM的硬件实现PAPR会是一个绕不过去的工程痛点。7.4 多用户与多址接入OFDMA的正交性扩展OFDM不光用于单链路传输4G和5G里还扩展出了OFDMA正交频分多址即把不同的子载波组合分配给不同的用户。用户之间靠正交的子载波集合隔离。这种方式让多用户调度变得灵活也天然支持频选调度——信道好的子载波可以优先分配给对应用户。OFDMA的调度算法很有意思既要考虑每个用户的信道质量又要平衡公平性和吞吐量还要考虑资源分配的信令开销。5G NR的调度粒度是资源块RB每个RB包含12个连续的15kHz子载波。再往上还有“资源块组”、“部分带宽”这些概念但根基还是子载波的正交性。8. 再往前一步OFDM的下一代演进在我看来OFDM生命力比很多人想象的要长。5G NR继续用OFDMWiFi 7也还是OFDM的增强版。但它的局限也在逐渐浮现对时频同步要求高、PAPR高、多径信道下的正交性脆弱。业界在探索的新波形有不少是冲着解决OFDM的痛点去的如UFMC、FBMC、GFDM等。FBMC通过滤波器组实现更低的旁瓣但代价是复杂度更高且与MIMO结合的难度更大。OTFS则是把调制域从时频域换到了时延-多普勒域在高速移动场景下表现更好。不过换个角度看这些新波形目前都没能撼动OFDM的主流地位。原因非常现实生态太强了从芯片到协议栈再到测试仪器全是OFDM优化过的。而且5G NR已经通过灵活的参数集numerology把OFDM的应用范围大幅扩展——子载波间隔可配、CP长度可配、带宽可配足以覆盖从海量物联网到低时延高可靠通信的各种场景。我个人在实际项目里的感受是与其追逐新波形不如先把OFDM的正交性问题彻底吃透。不管是做同步算法、信道估计、还是MIMO预编码OFDM这个坐标系是绕不开的。写这篇文章前我又把底层的推导完整过了一遍发现哪怕做了这么多年通信回到最基础的积分定义依然会有新的理解。数学本身的简洁和物理世界的映射确实是这个领域最迷人的地方。最后再分享一个小技巧遇到OFDM相关的不理解的问题别急着翻代码先拿纸笔把连续时间域的公式写一遍推导到离散域再对照仿真代码看每一行在实现公式里的哪一步。这个习惯帮我解决过不少难题也推荐给你。
网站建设高端定制企业官网