资讯动态

OFDM与OTFS的MATLAB仿真对比:从原理到误码率实现

发布时间:2026/9/12 7:38:05 来源:尧图企业网站定制
OFDM和OTFS这两个名字放在一起本身就是个挺有意思的题目。我在做移动通信物理层算法验证的时候经常被问到“OTFS到底比OFDM强在哪”但大多数回答都停留在理论上——说OTFS在高速移动场景下抗多普勒性能好时频双选信道下误码率低。可真要做对比仿真你会发现坑特别多两种系统的资源网格定义不一样、均衡算法复杂度差一个量级、导频插入方式也完全不同硬放在一起比很容易得出“OTFS不过如此”或者“OFDM已经够用”的偏颇结论。这篇内容的定位就是给正在做通信系统仿真、准备毕设或者需要评估OFDM和OTFS选型的同学一份可直接上手的MATLAB实现思路。基于16QAM和QPSK两种调制方式在高斯白噪声信道和频率选择性衰落信道下做链路级仿真对比两种系统的误码率表现分析差异背后的原因。我会从系统建模、仿真框架、信道设计到结果解读完整走一遍并把我调试过程中遇到的几个坑一并说清楚。1. 为什么要把OFDM和OTFS放在一个框架下对比1.1 OFDM的工程地位和它的天花板OFDM是当前通信系统绕不开的技术底座4G、5G、WiFi都在用。它的核心思想并不复杂把高速数据流串并转换分配到多个正交子载波上并行传输每个子载波上的符号速率降下来符号周期拉长再加上循环前缀就能有效对抗多径时延扩展。对接收端来说一个频率选择性衰落的宽带信道被OFDM分解成若干个频率平坦衰落的窄带子信道均衡变得非常简单每个子载波只需要一个复系数就能完成信道补偿。但这套机制在高铁、低轨卫星通信这类高移动性场景下会碰到麻烦。移动台和基站之间存在较大的相对速度时会产生明显的多普勒频移子载波之间的正交性遭到破坏这就是多普勒间干扰ICI。多普勒越严重OFDM数据符号经受的时变性越强信道在一个OFDM符号周期内不再恒定均衡效果明显恶化。我实测过在归一化多普勒频移达到0.1以上的时候OFDM系统的误码率曲线会出现明显平台单纯增大信噪比也无法改善这就是ICI主导的错误底限。1.2 OTFS的出发点把信道变“慢”而不是变“窄”OTFS的出发点完全不同。它不把信道当成时频域里的快变信道而是把数据符号映射到延迟-多普勒域——你可以理解为信道的本征域。在这个域里时间选择性信道和频率选择性信道被统一描述成一组稀疏的延迟-多普勒抽头每个抽头的响应在整个传输块内是近似恒定的。这带来的直接好处是接收端面对的是一个随时间基本不变的等效信道多普勒扩展不再表现为ICI而是被“冻结”成了信道矩阵里的固定抽头均衡的复杂度虽然上去了但性能天花板明显更高。我在设计仿真时坚持要把OFDM和OTFS放在同一个链路框架里不是为了“分出胜负”而是因为这两者本来就是同一套收发架构的两端。OTFS发射端在做完延迟-多普勒域符号映射后仍然要经过ISFFT和Heisenberg变换本质上就是一次OFDM调制接收端同样要经过Wigner变换和SFFT才能回到延迟-多普勒域。所以两套系统共用调制映射、信道模块、解调模块只在资源映射和均衡模块上做切换对比才是公平的。2. 两种系统在数学模型上的核心差异2.1 时频资源网格和延迟-多普勒资源网格的映射关系OFDM的系统模型是经典的时频域网格横轴是OFDM符号时间纵轴是子载波频率数据符号X[m, n]直接落在时频格点上m表示子载波序号n表示OFDM符号序号。发射信号通过IDFT把频域符号变换到时域发送接收端用DFT回到频域做均衡。OTFS则在发射端多了一个坐标系变换。数据符号X[k, l]定义在延迟-多普勒网格上k对应多普勒维l对应延迟维。发射端先做ISFFT把符号从延迟-多普勒域变换到时频域再走OFDM调制通路发射接收端先做OFDM解调再做SFFT回到延迟-多普勒域最后在这个域里做均衡。用一句好理解的话来说OFDM是把信道在频域上切成窄条让每个子载波上的信道近似平坦OTFS是把信道在延迟-多普勒平面上铺开让每个符号经历的信道响应趋于一致。2.2 为什么OTFS对多普勒不再“恐惧”延迟-多普勒域的奇妙之处在于多径信道在时频域表现出的时变特性在这个域里变成了稀疏的、时不变的脉冲响应。一条路径对应一个延迟抽头和一个多普勒抽头信号经过多条路径散射后接收端看到的是若干个固定位置上的能量叠加。只要这些抽头的位置不超出网格的覆盖范围——最大延迟不超过循环前缀对应时长最大多普勒不超过子载波间隔的一半——信道矩阵就是确定的、稀疏的均衡可以做得非常精准。OFDM在同样的信道条件下多普勒频移会导致子载波间能量泄漏频谱从冲激变成了升余弦形状ICI的功率随多普勒增大不可忽略。我在仿真频率选择性衰落信道时特意设置了不同多普勒频移档位归一化多普勒从0.01到0.2逐步增加就是为了量化这个退化过程。3. MATLAB仿真平台的搭建发射端到接收端的完整链路3.1 总体架构和模块划分我平时搭物理层仿真不太喜欢直接用通信工具箱里的现成调制解调模块倒不是不信任它而是做系统级对比时你更需要能精确控制每一级信号的流程。用通信工具箱会省事但遇到问题不好查尤其像OTFS这种工具箱没有现成方案的系统你只能自己搭。所以整体架构我设置成参数配置模块所有仿真参数集中成一个结构体包括子载波数、符号数、调制阶数、CP长度、多径配置、多普勒频移、SNR范围、蒙特卡洛包数。发射端模块比特流生成、调制映射、资源网格映射区分OFDM/OTFS、导频插入、ISFFTOTFS用、OFDM调制IFFT加CP。信道模块高斯白噪声信道、基于抽头延迟线的频率选择性衰落信道支持多普勒谱类型配置。接收端模块去CP、FFT、信道估计、均衡OFDM用一维频域均衡OTFS用二维延迟-多普勒域均衡、解映射、BER统计。这种模块化的好处很明显对比OFDM和OTFS时发射端只有资源映射和ISFFT两级不同接收端只有均衡器不同其它模块完全复用能保证对比的公平性。3.2 关键参数的确定子载波数、符号数、循环前缀参数设置是整个仿真的地基。我给的默认配置是子载波数M256OTFS符号数N32子载波间隔15kHz载波频率4GHzCP长度设为最大时延扩展的2倍以上。在这个配置下一个OTFS传输块的时间长度是N×T也就是32个OFDM符号的时长。需要注意OTFS的N个符号对应多普勒维的分辨率N越大多普勒分辨率越高能够分辨的多普勒频移范围反而越小这个权衡在你设置参数时必须想清楚归一化多普勒频移不能超过0.5否则超出网格的尼奎斯特范围会出现多普勒混叠。仿真时我一般固定传输块的总资源数保证OFDM和OTFS用相同的子载波数和符号数这样两者的频谱效率和发射功率完全一致对比结果才有意义。3.3 发射端MATLAB实现要点调制映射这一级16QAM和QPSK的区别只在于星座点的数量和比特到符号的映射表。需要注意的是功率归一化16QAM的平均符号能量是10QPSK是2如果不做归一化发射信号功率会随调制方式改变BER曲线会整体偏移对比就没意义了。我这里统一把星座映射表除以其均方根能量让两种调制方式的平均符号能量都是1。OFDM资源映射的代码逻辑比较直接% OFDM发射端核心频域符号映射 IFFT 加CP txGrid zeros(M, N); % 时频网格初始化 txGrid(dataIdx) dataSymbols; % 数据映射到指定子载波和符号 txGrid(pilotIdx) pilotSymbols; % 导频插入 ifftOut ifft(txGrid, M, 1); % 沿子载波维做IFFT转为时域 txSignal ifftOut(:); % 串并转换 txSignalCP [txSignal(end-CP_len1:end); txSignal]; % 加循环前缀OTFS发射端在OFDM之前多了一步ISFFT。MATLAB实现时要注意SFFT的方向ISFFT对多普勒维做IFFT对延迟维做FFT。这里很容易搞反搞反了结果就全乱了仿真曲线会非常离谱。% OTFS发射端核心延迟-多普勒域符号 - ISFFT - 海森堡变换(等效OFDM调制) ddGrid zeros(N, M); % 延迟-多普勒网格 N x M ddGrid(dataIdx) dataSymbols; % 数据映射 ddGrid(pilotIdx) pilotSymbols; % 导频插入 sfftOut ifft(ddGrid, N, 1); % 对多普勒维做IFFT sfftOut fft(sfftOut, M, 2); % 对延迟维做FFT % 此时sfftOut是时频域符号交给OFDM调制器 ifftOut ifft(sfftOut, M, 1); txSignal ifftOut(:); txSignalCP [txSignal(end-CP_len1:end); txSignal];代码里看起来ISFFT只是多了两行变换但这两行就是OTFS和OFDM最本质的区别。数据符号在延迟-多普勒域放置时所有符号在网格上均匀分布每个符号在时频域都会被扩展开因此OTFS天然获得了全分集增益这是OFDM逐子载波独立传输不具备的。4. 高斯白噪声信道下的仿真结果与链路自检4.1 先在AWGN下跑通链路正确性的第一步验证我一贯的做法是任何通信系统仿真第一步一定在高斯白噪声信道下验证这个环节不通过后面上衰落信道就是自欺欺人。AWGN信道下OFDM和OTFS的理论性能应该都接近香农限具体数值由调制方式和编码决定。无编码情况下QPSK在AWGN信道下的理论误比特率是Q(sqrt(2EbN0))16QAM大约是4/3×Q(sqrt(4EbN0/5))。我把两种系统的仿真结果和理论曲线放在一张图上主要看两条线是否贴合。实测下来OFDM和OTFS在AWGN下都能和理论曲线基本重合差距在0.1dB以内这说明发射端、接收端、信道模块的链路都是对的。这里要特别提醒AWGN信道下OTFS和OFDM性能曲线几乎完全重合这非常正常。因为AWGN信道是平坦的OFDM的子载波间没有也不同干扰OTFS的延迟-多普勒域里只有一个0,0抽头两者都没有信道损伤需要对抗性能差异不可能显现。所以不要指望在AWGN信道下看到OTFS的“优势”。4.2 调制方式对AWGN性能的影响对比16QAM和QPSK在AWGN下的表现可以得到一个经典结论要达到同样的误码率16QAM所需的信噪比比QPSK高约5~6dB误比特率在1e-4水平时差距约6.8dB具体取决于星座映射方式这是香农理论给的花销——用更高的信噪比换取两倍的频谱效率。我在仿真中固定了信息比特数这意味着使用QPSK时需要的符号数比16QAM多一倍。实际操作中更合理的做法是固定发射符号数让QPSK系统的原始比特吞吐减半直观地展示“调制阶数提升比特效率”的代价。两种做法都有人用你要在报告里写清楚自己的对比口径否则后期反复改参数很痛苦。4.3 一个容易被忽略的问题BER的统计口径误码率统计时比特错误率BER和符号错误率SER一定要分清。如果用的是Gray映射QPSK的BER和SER近似满足BER约等于SER/2的关系16QAM在低信噪比时不能直接用这个近似因为相邻星座点间可能出现多比特错误。我仿真时直接在接收端对比原始比特流和解调比特流统计的是真正的BER这在16QAM对比中更准确。5. 频率选择性衰落信道建模仿真性能差异开始显现5.1 时延-多普勒域的离散信道模型频率选择性衰落信道我采用的是抽头延迟线模型这也是3GPP标准中常用的做法。每个抽头由三部分描述相对时延、平均功率、多普勒谱类型。我使用了一组典型的多径参数具体如下抽头1相对时延0ns平均功率0dB经典多普勒谱抽头2相对时延50ns平均功率-1dB经典多普勒谱抽头3相对时延120ns平均功率-3dB经典多普勒谱抽头4相对时延200ns平均功率-6dB经典多普勒谱抽头5相对时延350ns平均功率-10dB经典多普勒谱这组参数的最大时延扩展是350ns最大多普勒频移我按需设定。在MATLAB中可以直接用通信工具箱的comm.RayleighChannel来生成信道响应也可以用自写多径叠加器两种方式我都试过。工具箱的好处是参数校验更严格多普勒谱算法更成熟自写的好处是你能直接拿到每一条径的复增益序列方便做信道矩阵构造。OTFS仿真中通常需要构造完整信道矩阵来做均衡所以我更倾向于自写信道模块拿到抽头系数后自己构造稀疏矩阵。5.2 OFDM在频率选择性衰落信道下的表现OFDM处理频率选择性衰落信道的逻辑很清晰由于每个子载波带宽小于信道相干带宽每个子载波上的信道可以视为平坦衰落只需要在频域用导频估计出每个子载波上的信道响应H[k]然后用最小二乘或最小均方误差准则做均衡最后对均衡后的符号做硬判决解映射。在归一化多普勒频移较小0.01左右时OFDM的误码率曲线和理论慢衰落曲线吻合得很好可以观察到分集阶数由导频设计和信道编码决定的典型趋势。但当我逐步提高多普勒频移到0.1以上时OFDM的误码率曲线尾部开始抬高出现了明显的错误底限。原因是多普勒造成子载波间能量泄漏导频所在的子载波被周围子载波的数据污染信道估计本身就不准了均衡系数自然带偏差。5.3 OTFS的二维均衡实现OTFS在延迟-多普勒域的均衡需要构造一个二维信道矩阵。接收到时域信号后经过Wigner变换得到时频域信号再经SFFT得到延迟-多普勒域的接收符号。此时系统模型可以写成Y[n, m] H_eff × X[n, m] N[n, m]其中H_eff是一个块循环矩阵体现了所有延迟和多普勒抽头对符号的线性叠加效应。OTFS均衡的关键就是对这个矩阵求逆或近似求逆。最直接的方法是迫零均衡用H_eff的伪逆去乘接收符号。但矩阵维度是NM×NM直接求伪逆在仿真参数下256×328192是个很大的矩阵内存压力不小。实际仿真时我做了一个简化利用信道矩阵的块循环结构借助二维FFT在频域进行均衡。这样既保留了OTFS全分集的优势又避开了大矩阵求逆的内存爆炸问题。代价是实现复杂度更高理解起来也更绕一些但这正是OTFS仿真最有价值的地方——你必须把信道的延迟-多普勒特性理解透才能写出能跑的均衡器。5.4 实测性能对比OTFS在中高移动性下翻身在归一化多普勒频移0.15、16QAM调制、EbN020dB的条件下OFDM的BER大约在1e-2量级而OTFS可以做到1e-4以下性能差距接近两个数量级。这里要强调的是OTFS的增益不是“白来的”它的代价是接收机复杂度显著提高——OFDM的均衡只需要M×N个复数乘法逐子载波单抽头均衡OTFS二维均衡要处理整个块内的状态耦合。所以实际工程选型时要权衡的问题很明确如果你的应用场景是准静止或低速移动多数室内WiFi场景OFDM已经足够OTFS的复杂度就是纯开销如果是高铁、低轨卫星移动通信这类高多普勒场景OTFS的性能优势值得付出额外复杂度。6. 16QAM与QPSK的取舍频谱效率和鲁棒性的平衡6.1 频谱效率和解调门限的数学关系16QAM的频谱效率是QPSK的两倍——每个符号携带4比特和2比特的区别。但高密度星座点意味着星座点间的欧氏距离更小抗噪声能力更差。从理论和仿真结果看16QAM要达到QPSK相同的误码率需要的信噪比高出6dB左右这个差距在频率选择性衰落信道中还会被进一步放大因为信道衰落会压缩星座点的有效距离。在系统中还有一个容易忽略的工程细节高调制阶数对信道估计误差更敏感。同一套导频设计和信道估计算法在QPSK下看不太出问题换成16QAM后性能可能明显下降。我在仿真中把导频功率增强到数据功率的1.5倍时16QAM的误码率改善比QPSK明显更大这个现象和理论吻合高密度调制对有效信噪比更敏感。6.2 两种信噪比定义EbN0和SNR的换算做仿真时很多人会在EbN0和SNR换算这个环节被卡住。在MATLAB里awgn函数默认是以SNR为单位加噪的但通信系统性能曲线通常横轴是EbN0两者换算关系是SNR EbN0 10×log10(每个符号的比特数) 10×log10(编码速率)无编码时QPSK每个符号2比特16QAM每个符号4比特。所以在相同EbN0下16QAM的SNR比QPSK高3dB这只是因为每个符号携带的比特数更多不代表16QAM性能更好。这个换算关系在做对比图时尤其重要如果你对横轴的定义不统一画出来的曲线直接错位结论就是错的。6.3 实际仿真看到的现象我在频率选择性衰落信道下跑了两组MAIN仿真一组固定EbN0范围一组固定SNR范围。在固定EbN0对比时QPSK的BER普遍优于16QAM这个结论符合理论预期。但有趣的是当我把横轴换成SNR时在相同SNR下16QAM由于每个符号携带更多比特传输的有效信息更多系统吞吐反而更高。所以如果你做的是系统级评估横轴选择一定要和你的评价指标匹配比误码率看EbN0比吞吐量看SNR。还有一个值得留意的现象在低信噪比区间16QAM的BER曲线斜率比QPSK更陡。这意味着16QAM更容易受到信道估计误差和多普勒干扰的影响它对信道恶化更“敏感”。OTFS在16QAM下的优势比QPSK更明显因为高调制阶数暴露了OFDM信道估计在多普勒下的缺陷。7. 调试过程中踩过的一些细节坑7.1 功率归一化最影响公平性的问题我最初跑对比时OFDM和OTFS的发射信号没有做严格的能量归一化结果OTFS的BER曲线整体比OFDM好约2dB。仔细查发现OTFS发射端的ISFFT变换改变了信号能量分布导致实际发射功率偏低相当于接收端的“有效EbN0”变大性能自然就好看了。这是对比仿真中最隐蔽的坑。解决办法是在发射端加入功率归一化因子计算txSignal的实际均方根功率把它归一到1。每帧信号都要单独做一次归一化不能只算一次就沿用因为不同数据符号序列的峰均比会有波动。7.2 循环前缀长度不足引发的子载波间干扰频率选择性衰落信道下如果CP长度小于信道最大时延扩展前一个OFDM符号会污染下一个符号的起始部分形成符号间干扰。这个现象在误码率曲线上表现为低信噪比处误差平台就是曲线不再随EbN0增加而下降停留在某个高位。我踩过的坑是我把最大时延扩展设置成350ns而子载波间隔15kHz对应的OFDM符号周期约66.7us看起来CP设成5.2us就足够但在多径信道下信道时延扩展经过信道滤波后可能产生拖尾安全和稳妥的做法是把CP设置为最大时延的2倍以上。调整后误码率平台消失曲线回归正常。7.3 OTFS的边界效应窗函数很关键OTFS的接收端在做SFFT时隐含假设了信号的循环卷积特性——也就是时频域的二维周期延拓。但实际传输中信号长度有限边界处会出现窗口效应导致信道矩阵不是严格的循环矩阵均衡后会产生额外的误差。这是OTFS实现中的一个经典问题标准解法是使用波形设计即发送和接收窗函数。仿真中最简单可行的方式是在发射端对时域信号做raise-cosine窗函数处理接收端对应做匹配窗。但窗函数的引入会略微降低有效信噪比你需要根据系统设计目标权衡选择。我只在直接构造信道矩阵做均衡的模式下加了窗在基于FFT的均衡模式下窗口效应已经包含在信道矩阵构造中没有额外处理实测BER差异不明显但如果你追求更高的仿真精度这一步不能省略。7.4 蒙特卡洛仿真包数不够曲线抖动严重高信噪比下误码率降到1e-4量级时单帧10000个比特很难统计出可靠的BER——错误比特可能只有个位数统计方差极大。我至少会跑20帧以上保证每个EbN0点统计的比特数超过1e6否则曲线在高信噪比部分会毛刺很多别人一看就知道你的仿真不严谨。还有一个细节不同EbN0点应该用不同的随机种子避免低信噪比下产生的突发错误在高信噪比下重复出现这会影响曲线的平稳性。我通常是每个EbN0点生成一个独立的随机流而不是连续滚下来。7.5 导频设计与信道估计精度的联动虽然在基础仿真中我用了最简单的LS信道估计但导频位置的设计也需要讲求策略。OFDM的导频一般按梳妆分布插入在特定子载波上OTFS的导频则在延迟-多普勒网格上选择特定位置通常包括一个保护带区域避免数据符号对导频的干扰。OTFS导频的保护带大小直接决定了信道估计能支持的最大多普勒和延迟范围。保护带太小导频会被数据污染保护带太大频谱效率损失过多。实测下来在多普勒范围100~500Hz、时延扩展350ns的场景下导频周围预留2格延迟、2格多普勒的保护带比较稳妥再大就对性能提升不明显了。8. 对仿真结果的最后解读花了这么多篇幅把系统搭建和结果对比讲清楚最后还是要回到一个问题上这套仿真平台做完之后可以用来干什么我的看法是它的价值不在于证明OTFS比OFDM好而在于让你有一个可以精确控制的试验台能够回答“在某种信道特性恶化到某个程度时哪种调制和波形组合开始失效”这类具体问题。比如你可以修改多径衰落信道的抽头数、多普勒频移大小、调制阶数观察系统误码率恶化的临界点。这在工程预研和算法验证中是非常有用的能力。从我个人经验来看做这种对比仿真最忌讳的就是参数不统一。每次有人拿着得出“某某系统碾压某某系统”结论的仿真图来找我看我第一件事就是查两边发射功率、符号数、信道实现是否完全一致。通信仿真里九成的惊人结论都源于对比口径的偏差。这套平台以后还可以扩展的方向包括加入LDPC或Turbo信道编码对比编码增益、实现基于消息传递的OTFS迭代接收机、加入信道估计误差的影响分析。每一个方向都能单独写出一篇内容来。如果后续你们在跑OFDM和OTFS仿真时遇到具体的实现问题也欢迎在评论区聊聊踩过的坑互相分享能省不少折腾时间。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价