【MATLAB源码-第396期】基于MATLAB的ZP-OTFS系统仿真与MRC及多检测器性能对比分析
操作环境:
MATLAB 2024a
1、算法描述
传统通信系统里,大家更熟悉的是OFDM,它把数据放在不同的子载波和符号时隙上,然后在频域和时域中完成传输。OFDM在静态或者低速场景下表现很好,因为它擅长把频率选择性衰落的信道拆分成很多近似独立的窄带子信道。但是一旦用户移动速度提高,或者场景中存在明显的多普勒扩展,信道在一个符号周期内就可能发生显著变化,这样一来原本比较好处理的正交结构就会被破坏,子载波之间会产生更复杂的干扰,均衡和检测的难度也会迅速上升。OTFS的提出,正是为了更好地应对这种高速时变环境。它的核心思想不是直接在时频平面上传送数据,而是先把数据符号放到时延-多普勒域中。在这种表示方式下,信道中的多径传播和运动引起的频移会以更加结构化的形式表现出来,原本在时频域里快速变化的信道,在时延-多普勒域中往往会变得更加稀疏、更加稳定,因此更有利于做信道建模和信号检测。
从系统角度看,这段代码所实现的OTFS并不是一个抽象概念,而是很具体的一套基带处理流程。发送端先随机生成二进制比特流,再通过QAM调制将比特映射为复数符号。QAM本身是一种非常经典的数字调制技术,它把不同的比特组合映射到不同的复平面点上,通过同时利用幅度和相位承载信息来提高频谱效率。在这套系统里,QAM符号并不是直接送去做传统调制,而是先被放入一个二维资源网格。这个资源网格可以理解为OTFS系统的数据承载平面,其中横向和纵向分别对应两个不同的物理维度。通过这种二维排布,系统可以在后续变换过程中把符号映射到更适合时变信道传播的结构中。
这里又要说到ZP,也就是零填充。代码描述的是ZP-OTFS系统,而不是普通OTFS系统。所谓零填充,就是在每个数据块中并不是所有位置都承载有效信息,而是专门留出一部分空位置,用零来填补。这种设计的目的不是为了浪费资源,而是为了控制多径扩展带来的块间干扰。时变多径信道会把一个符号拖尾到后续时刻,如果不做保护,不同数据块之间会相互串扰,导致接收端很难分块处理。而零填充就相当于在每个块尾部加了一个缓冲区,使信道的拖尾主要落在这个保护区域内,从而让等效信道矩阵形成较为规整的块结构。这样一来,接收端就可以利用这种结构设计复杂度更低的检测算法。换句话说,ZP-OTFS并不是简单地在OTFS前面加了一个零,而是在系统层面为后续信号检测创造条件的一种结构性设计。
经过资源网格映射和零填充布置之后,系统要完成OTFS调制。调制的本质是把时延-多普勒域中的数据变换到适合实际发射的域中。虽然代码里用了傅里叶变换矩阵来完成这个过程,但从系统角度看,可以把它理解为一种二维映射过程。这个过程的意义在于,把原本放在时延-多普勒平面中的符号重新组织成发送波形,使它们在经过时变信道之后仍然保留一定的可恢复结构。最终发射出去的是一个时域复信号序列,这个序列承载了所有待传输的数据,同时又隐含了时延-多普勒域的信息组织方式。
信道部分也是这套系统非常关键的一环。它并没有把信道简单地设成一个固定增益或者静态多径,而是构造了具有时延和多普勒双重特性的离散时变信道模型。时延表示多径传播带来的不同到达时间,反映的是信号经过不同路径传播后的延迟差异;多普勒表示由于收发双方相对运动造成的频移,它会让信道随时间不断变化。对于普通低速系统来说,多普勒可能只是个次要问题,但对于高速场景,例如高铁通信、车联网、低空飞行平台或者卫星通信,多普勒往往会成为性能下降的主要来源。这套代码采用了典型移动通信场景中的信道参数,通过多个路径的时延和多普勒抽头来描述传播环境,因此它研究的问题并不是理想情况下的简单数据恢复,而是更接近实际时变无线信道下的高可靠检测问题。
信号通过信道之后,接收端获得的是一个已经被多径扩展、多普勒扰动和噪声共同污染的序列。接收端首先会重新组织这个序列,把它恢复到便于处理的二维形式,再根据不同算法的要求构建相应的信道表示。这个时候,同样一个接收信号,可以从不同角度来看待。有的算法更适合在时频域处理,有的算法更适合在时延-时间域处理,有的则直接在时延-多普勒域进行推断。这也是OTFS系统检测问题最有意思的地方之一:它的接收处理并没有唯一标准答案,不同算法可以利用不同域中的结构特征,只要能够更好地对抗干扰并恢复原始符号,就都有存在价值。
在这些检测方法中,MRC检测器是这套系统的一个核心。MRC中文通常称为最大比合并。很多人第一次接触这个概念时,会把它理解成多天线接收中的加权合并技术,这种理解不能说错,但在这里它的应用场景更偏向时延-时间域的分量合并。因为在OTFS信道中,一个符号经过时变多径传播后,它的能量会分散到多个相关分量中。MRC检测的思想,就是按照不同分量的有效强度进行权重分配,把这些与目标符号相关的观测尽可能有效地叠加起来,从而提升判决可靠性。它的优点在于直观、稳定,而且复杂度相对可控。特别是在零填充结构下,系统的干扰扩展被限制在一定范围内,MRC就更容易发挥作用。代码中不仅实现了MRC检测本身,还通过多次迭代不断修正估计结果,因此这里的MRC并不是一次性粗略检测,而是一种结合了结构信息和迭代更新的增强型检测机制。对一个研究OTFS的人来说,MRC的意义在于它提供了一种性能和复杂度之间比较均衡的思路,不像全局最优检测那样难以实现,也比单纯线性均衡更能利用多径结构。
除了MRC之外,系统里还实现了MPA检测器。MPA也就是消息传递算法,它在现代通信检测中是一类非常典型的方法。它的核心思想不是直接对整个高维信号做一次性判决,而是把系统建模成一个由观测节点和变量节点组成的图结构,然后在图上不断传递概率信息,让每个节点根据邻居传来的消息更新自己对符号的置信度。这个过程有点像很多局部观察者不断交流意见,经过若干轮沟通后逐步形成对全局状态的判断。MPA之所以适用于OTFS,是因为OTFS等效信道在很多情况下具有稀疏性,也就是说每个观测值只与少数几个数据符号强相关,这恰好适合用图模型来表达。MPA的优势在于性能通常比较好,尤其在中高信噪比或者信道稀疏特征明显时,能够比较接近更优检测结果。但它的代价是计算量相对较大,尤其当调制阶数升高或者节点连接关系复杂时,消息更新的开销会明显增加。因此在你的这套代码里,MPA既是一个性能参考,也是一个复杂度参考。把它和MRC、LMMSE、单抽头均衡等方法放在一起比较,可以更清楚地看出不同算法的取舍关系。
系统里还有Algorithm 3以及它的低复杂度版本。虽然从名字上看不如MRC和MPA那么直观,但它们其实代表的是另一条很重要的技术路线,也就是基于迭代线性求解思想的检测方法。这类方法往往把信号检测问题转化为一个大型线性系统的近似求解问题,然后利用某种迭代方式逐步逼近结果。高斯-赛德尔思想就是其中很典型的一种。它的特点是不需要一次性求解完整矩阵逆,而是通过当前已有估计不断更新各个分量,从而在较低复杂度下获得逐步收敛的结果。对于OTFS这种维度较高、耦合较强的系统来说,直接精确求逆往往代价太高,而这种基于块结构和局部更新的迭代法就非常有吸引力。低复杂度版本进一步利用ZP-OTFS的信道结构,减少不必要的运算,从而让算法更适合大规模仿真甚至工程实现。从整个系统设计的角度看,Algorithm 3这一类方法体现的是“借助矩阵结构降低复杂度”的思路,而MRC体现的是“利用多径分量做有效加权合并”的思路,MPA体现的是“基于概率图模型进行迭代推断”的思路,这三类方法放在同一个系统里,本身就构成了一种很有代表性的OTFS检测技术谱系。
再说单抽头时频均衡器。它是所有检测器里最简单的一类,也最容易理解。所谓单抽头,可以把它理解成在每个时频单元上独立进行一次简单均衡,根据该点上的信道响应直接补偿幅度和相位失真。它的优点非常明显,就是实现简单、计算量低,非常适合作为低复杂度基线方案。问题在于,OTFS系统中的符号耦合往往不是局限在单个时频点上的,特别是在明显时变和多径扩展条件下,不同位置之间会存在较强干扰。单抽头均衡器把这些复杂耦合大大简化了,因此虽然运行快,但在复杂信道下性能通常不会特别理想。正因为如此,它常常被当作一个对照方案。通过把它和MRC、MPA、LMMSE等方法比较,就可以看出“简单处理”和“结构化检测”之间到底差了多少。
LMMSE也是系统中很重要的一项技术。它是一种经典的线性估计方法,中文可以理解为线性最小均方误差估计。它的思路不是单纯把信道逆过来,也不是像MPA那样做概率传播,而是在噪声和干扰都存在的情况下,寻找一个在平均意义上误差尽可能小的线性映射。LMMSE的最大特点是稳定而且实用,它比零迫均衡更能兼顾噪声放大问题,又比很多非线性检测器更容易实现。在这套代码里,它采用分块方式进行检测,说明系统充分利用了ZP结构带来的块状信道特性。分块处理的好处是能把大问题拆成若干更小的问题,从而控制矩阵运算复杂度。LMMSE通常不会是性能最强的那个,但它往往是一个非常有说服力的工程基准,因为它兼顾了理论基础、性能表现和实现代价。对于任何一个检测器来说,能否明显优于LMMSE,往往是评价其实用价值的重要标准之一。
从系统仿真的结果组织方式也能看出,这套代码关注的不只是“能不能检测出来”,更关心“检测效果到底怎么样,代价又是多少”。因此程序中除了统计误码率,还统计了平均迭代次数。误码率反映的是检测精度,平均迭代次数则在一定程度上反映算法复杂度和收敛速度。一个算法误码率低,并不一定就最值得用;如果它需要非常多的迭代,或者在不同信噪比下收敛很慢,那么它的工程吸引力就会下降。反过来,一个稍微牺牲一点性能但迭代次数明显更少的算法,很多时候反而更适合实际系统。所以这套代码把BER曲线和迭代次数都纳入比较,本质上是在做系统级权衡,而不是单纯追求某一项指标好看。
2、仿真结果演示


3、关键代码展示
略
4、MATLAB 源码获取
V
点击下方名片关注公众号获取
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)