1. 项目概述与核心技术点解析
做通信仿真这行的朋友应该都有体会,5G毫米波频段的研究和6G预研这两年越来越偏向超密集网络(UDN,Ultra Dense Network)这个方向。原因很直接:Sub-6GHz频段资源已经挤得差不多了,毫米波频段带宽大、时隙短、波束窄,是提升系统容量的现实出路。但这个频段的路径损耗、穿透损耗和阻塞效应极其严重,单纯靠提高发射功率根本解决不了问题,必须依赖大规模天线阵列配合波束成形技术来弥补链路预算。
该项目“5G毫米波UDN中带有位置感知波束成形的链路级模型干涉评估”的核心任务,就是在Matlab环境下搭建一个链路级仿真模型,重点考察在超密集部署场景下,位置感知波束成形(Location-Aware Beamforming)能否有效抑制小区间干扰,以及在不同用户分布、不同基站密度条件下,系统的信干噪比(SINR)、吞吐量和误码率会呈现出怎样的变化规律。简而言之,这套模型回答的问题是:当基站密集到一定程度、波束窄到一定程度时,干扰到底是变大了还是变小了,位置信息能不能帮我们把波束指得更准、把干扰压得更低。
从工程实现角度看,这个项目的价值在于它把“波束成形”从理想化的单链路场景推进到了多小区、多用户、多干扰源的复杂场景。传统的波束成形仿真往往只考虑一个基站服务于一个用户,顶多加点高斯白噪声;而UDN场景里,每个用户周围可能同时存在十几个甚至几十个可用的基站,波束之间的旁瓣重叠、信道上的空间相关性、用户移动带来的波束失准,这些都是在真实系统里必然遇到、但在教科书里不容易讲清楚的问题。这个模型把这些问题落到了可运行的代码里,这对做算法验证、链路预算评估、系统级预研的同学来说,参考价值非常大。
这套模型的适用人群,我总结下来有三类:第一类是正在做5G NR毫米波物理层算法研究的学生和工程师,需要快速验证波束成形增益和干扰抑制效果;第二类是从事超密集组网规划、覆盖优化、干扰协调的系统工程师,需要拿到量化的SINR分布数据来支撑站点部署决策;第三类是刚接触Matlab通信仿真、想通过一个完整案例来理解毫米波信道建模和波束管理机制的初学者,这个项目把信道、天线阵列、波束赋形、链路级指标计算串成了一条完整的链路,跟着源码走一遍,对整体框架的理解会比只看教材深刻得多。
2. 系统模型与仿真架构拆解
2.1 UDN场景下的信道特性与传播模型选择
毫米波UDN仿真第一个要面对的问题,就是信道模型怎么选。很多人习惯直接用3GPP TR 38.901里定义的UMa或UMi街道峡谷模型,但在UDN场景里,基站间距可能只有20到50米,用户和基站之间的距离甚至可能低于10米。这时候近场效应开始显现,平面波假设不再严格成立,路径损耗指数、时延扩展、角度扩展这些参数都跟传统宏站场景有明显差异。这个模型里采用的是基于空间一致性的随机信道生成方法,结合了视线传播(LOS)与非视线传播(NLOS)的概率切换,这是比较贴合实际的做法。
空间一致性这一点容易被忽视,但在UDN仿真里非常重要。简单说就是:当用户从一个位置移动到另一个位置时,信道的大尺度参数(路径损耗、阴影衰落)和小尺度参数(到达角、离开角、时延)应该连续变化,而不是突变。如果信道生成模块不考虑空间一致性,用户移动几步之后信道特性剧烈跳变,Beam tracking和位置感知算法的效果会被严重低估或高估,仿真结论的真实性就打折扣了。
路径损耗模型方面,该仿真分别对LOS和NLOS两种情况使用了不同的路径损耗指数。毫米波频段下LOS路径损耗指数通常在2.0到2.3之间,NLOS则会上升到3.0到3.8之间。而且NLOS情况下的阴影衰落标准差明显更大,这意味着在UDN里,一个用户被高层建筑遮挡后信号质量可能瞬间掉十几个dB,这对波束成形的鲁棒性提出了相当高的要求。
2.2 位置感知波束成形的核心逻辑
谈这个项目里最核心的算法模块——位置感知波束成形。传统做法是基于信道估计的波束成形,比如利用SRS或CSI-RS做信道探测,然后算特征波束或MMSE波束。这种方式在低移动性场景下效果很好,但问题在于:信道估计需要导频开销,在UDN中大量小小区同时发送导频时,导频污染问题会显著恶化估计精度。此外,信道估计存在延迟,用户一旦快速移动,测得的信道信息就已经过时了,波束指向自然就偏了。
位置感知波束成形的思路完全不同。它假设基站能通过某种定位手段(比如GPS、UWB、上行定位参考信号PRS)获得用户的位置坐标,然后直接根据几何关系计算用户相对于基站天线阵列的方位角和俯仰角,再把这些角度映射到预定义的波束码本上。这种方式不需要频繁的信道估计,只需要以较低的频率更新位置信息,因此开销小、抗移动性强,特别适合高频段、高移动性的场景。
在这个模型中,位置感知波束成形的实现路径是:基站根据用户的位置坐标计算出理想入射角,然后从DFT码本或过采样码本中选择与之最匹配的波束方向。仿真中还可以设置位置误差参数,用来模拟定位精度有限的情况,从而考察位置感知算法在非理想定位条件下的性能退化程度。实测下来,当定位误差控制在5度以内时,波束成形增益损失可以控制在1到2 dB以内;但一旦定位误差超过10度,增益损失会迅速扩大,接近4到5 dB。这个结论对实际系统设计是有指导意义的——不是有了位置信息就能高枕无忧,定位精度同样是系统性能的关键瓶颈。
2.3 干扰评估模型与SINR计算框架
链路级模型里,干扰评估的核心指标是每个用户接收端的SINR。UDN场景下,用户不仅收到服务基站的信号,还同时受到大量邻区基站的同频干扰。计算SINR时需要将这些干扰源的发射功率、天线增益、路径损耗和阴影衰落逐项累加。
这个模型计算SINR的框架大致如下:
接收信号功率 = 服务基站发射功率 + 服务基站天线增益 + 服务基站到用户的路径增益
干扰功率 = 所有干扰基站的发射功率 + 干扰基站天线增益 + 干扰基站到用户的路径增益之和
SINR = 接收信号功率 - 干扰功率 - 噪声功率(注意这里全部是dB域计算)
但在实际操作中,天线增益这个量需要格外小心。基站天线增益是发射角度的函数,用户天线增益是接收角度的函数。在波束成形场景下,服务基站会将波束指向用户,因此用户处于服务基站的主瓣内,能拿到完整的天线增益;而干扰基站通常将波束指向它们各自服务的用户,所以干扰信号在用户方向上往往是旁瓣增益,可能是主瓣增益的-15到-20 dB。这个差异正是波束成形能够抑制干扰的核心机制。如果仿真代码里把干扰基站的天线增益都简单设置为主瓣增益,那就完全失去了波束成形干扰抑制的意义,结论也会严重偏离实际。
该模型的干扰评估模块还支持设置协作波束成形模式,也就是说多个基站可以协调彼此的波束方向,使得干扰基站的主瓣尽可能避开某些受保护的用户。这就是后面要讲的干扰协调策略。通过对比不协调和协调两种模式下的SINR累积分布函数(CDF),可以直接量化位置感知波束成形在干扰抑制方面带来的系统级收益。
3. 仿真参数配置与Matlab实现要点
3.1 毫米波UDN仿真的关键参数选择
实际跑这个仿真时,参数配置是决定结果是否合理的第一道关口。我梳理了一下该模型涉及的主要参数及其典型取值和设置注意事项,整理成表格供参考:
| 参数类别 | 参数名称 | 典型取值/范围 | 设置注意事项 |
|---|---|---|---|
| 频段 | 载波频率 | 28 GHz / 39 GHz | 频段不同,路径损耗指数和气流衰减略有差异,需保持一致 |
| 带宽 | 系统带宽 | 100 MHz / 400 MHz | 带宽决定噪声功率,用kTB公式计算时需要准确换算 |
| 噪声系数 | 用户终端噪声系数 | 7 ~ 9 dB | 毫米波终端前端损耗大,噪声系数比Sub-6GHz高不少 |
| 天线阵列 | 基站天线阵元数 | 8x8 / 16x16 均匀矩形阵列 | 阵元越多波束越窄,但扫描开销和硬件复杂度同步上升 |
| 基站密度 | 站间距 | 20 ~ 100 m | 小于30m时干扰状况会发生质变,建议做敏感性扫描 |
| 用户数 | 每小区活跃用户数 | 2 ~ 16 | 多用户场景注意配对调度和用户间干扰 |
| 移动速度 | 用户移动速度 | 0 ~ 60 km/h | 5km/h以下可以忽略波束更新延迟,20km/h以上必须建模 |
| 定位误差 | 位置估计标准差 | 0 ~ 10 m | 直接决定位置感知波束指向的角度偏差,0代表理想定位 |
| 业务模型 | 流量到达模型 | 全缓冲 / 突发到达 | 全缓冲模型适合评估系统上限,突发模型更贴近真实网络 |
在Matlab代码实现里,这些参数应当集中在仿真配置文件或脚本头部统一管理,不要散落在各个函数中。做工程仿真的人都知道,参数管理的混乱是结果不可复现的头号原因。建议把所有参数定义成一个结构体,例如cfg.fc = 28e9; cfg.bw = 400e6; cfg.bsAntSize = [8 8];这样既清晰又便于批量跑参数扫描。
3.2 天线阵列与波束码本生成
毫米波仿真里天线阵列建模直接决定波束图的形状和增益。该模型采用的是均匀矩形阵列(URA,Uniform Rectangular Array),因为实际部署中面阵比线阵更常见,可以同时控制方位角和俯仰角。Matlab的Phased Array System Toolbox提供了现成的phased.URA对象,用起来很方便,但要注意几个细节:
阵元间距设置。毫米波频段通常取半波长间距,28 GHz下波长大约是10.7 mm,半波长就是5.35 mm。如果阵元间距大于半波长,会出现栅瓣,造成波束指向歧义;如果小于半波长,虽然不会出现栅瓣,但有效孔径变小,波束宽度变宽,增益下降。所以在建模时不要随意改阵元间距,除非你在研究稀疏阵列等特殊主题。
DFT码本的生成方法。标准的DFT码本本质上是对方位角和俯仰角进行等间隔采样,码本中的每个码字对应一个空间方向。生成方法其实很直接:对导向矢量矩阵做傅里叶变换采样。在Matlab里可以用dftmtx(N)生成DFT矩阵,然后结合阵元位置计算每个码字的阵列响应。需要注意的是,DFT码本只在阵元间距为半波长且阵列均匀的假设下才是最优的,如果阵列构型不规整,就需要用其他码本设计方法。
对于位置感知波束成形,基站根据用户位置估算出方位角 θ 和俯仰角 φ 后,要在码本中查找与之最匹配的码字,这个过程称为波束选择。最简单的方法是穷举搜索所有码字,计算每个码字对应的波束指向角与目标角度的距离,取最小角距的码字作为最优波束。当码本规模较大(例如16x16的过采样码本,共256个码字)时,穷举搜索的计算量是可以接受的。如果码本更大、需要低复杂度实现,则可以考虑分层搜索或者基于查表的快速匹配算法,但这是后话。
3.3 链路级指标计算:从SINR到吞吐量
链路级模型的输出指标,业界通常约定俗成地考察BLER(误块率)、吞吐量和SINR分布。这个项目里主要算的是用户SINR和对应的可达速率。
对每个用户,计算流程如下:
- 确定服务基站和干扰基站集合。UDN里通常基于RSRP(参考信号接收功率)最强原则选择服务基站,也就是用户接入信号最强的那个小区,其余基站一律视为潜在干扰源。
- 计算服务链路的接收功率,包含发射功率、阵列增益、快衰落余量、路径损耗和阴影衰落。
- 对所有干扰基站重复同样的计算,但要注意天线增益必须按用户方向对应的实际波束增益来取,而不是直接用最大增益。
- 汇总干扰功率,加上热噪声功率,得到SINR。
- 用香农公式计算频谱效率,并用一个衰减因子校正实际调制编码方案(MCS)对应的实现损失。
关于香农公式在实际仿真里的使用,我多说一句。很多初学者喜欢直接写Rate = log2(1 + SINR);然后乘上带宽就算完事了。这在理想情况下勉强说得过去,但实际LTE/NR系统里,由于调制方式和信道编码的约束,频谱效率通常只能达到香农极限的60%到75%左右。更合理的做法是使用带衰减因子的修正公式:Rate = bw * log2(1 + SINR) * efficiencyFactor;其中效率因子根据目标BLER和MCS等级设置,一般取0.65到0.75。这个细节看似不起眼,但对最终系统容量的评估影响很大,如果不做修正,仿真出来的小区吞吐量可能会比实际系统高出30%以上。
4. 完整仿真流程与关键环节实现
4.1 仿真链路搭建:从初始化到结果输出
整个仿真的主流程可以划分为8个环节,我来逐个拆解:
第一步是参数初始化和场景生成。定义载波频率、带宽、基站数量、站间距、用户数、天线配置、移动模型和信道参数。场景生成时需要固定随机数种子,确保实验可重复。很多做仿真的人都有过这样的经历:同样的代码跑两次,结果完全不一样,最后发现是忘了设置随机种子。在Matlab里用rng(2024);这种写法锁定种子,结果就能稳定复现。
第二步是基站和用户位置初始化。UDN场景里基站位置通常按六边形网格或均匀随机撒点方式部署,用户位置则随机分布在覆盖区域内。这里有经验的工程师一般会在场景边界留出一定的保护带,避免边界用户的服务基站数少于中心用户,造成统计偏差。
第三步是信道生成。对每一对基站-用户组合,分别生成大尺度衰落和小尺度信道系数。Matlab里可以用自行编写的空间信道生成函数,也可以用5G Toolbox的nrChannel相关接口。自己写代码的好处是灵活可控,方便嵌入位置感知波束成形的方向角计算;用工具箱的好处是标准模型内置,参数设置省心。建议仿真者先跑通自写版本理解原理,再考虑切换到工具箱提高效率。
第四步是服务小区关联。基于位置和天线增益,计算每个用户到所有基站的参考信号接收功率(RSRP),对每个用户选出RSRP最大的基站作为服务基站,其他基站作为干扰源。值得提醒的是,在毫米波频段,由于波束方向性极强,服务基站的选择不应只看距离,而应综合考虑路径损耗和天线增益的联合影响。
第五步是波束成形向量计算。根据用户位置计算目标方向角,从码本中选择最优波束。位置感知波束成形的核心代码在这里体现,通常是一个函数,输入是用户坐标和基站坐标,输出是选定的波束索引和对应的波束增益方向图。
第六步是干扰计算。逐用户遍历所有干扰基站,计算干扰信号功率。这个环节的复杂度是基站数乘以用户数,在UDN里基站数量可能达到几十个甚至上百个,计算量会明显上升。合理使用矩阵化和并行计算(如parfor)可以显著加速。
第七步是性能指标统计。对每个用户计算SINR,进而计算吞吐量、频谱效率等指标,并汇总成CDF曲线。
第八步是结果可视化。画出基站分布图、波束方向图、SINR热力图、SINR CDF对比曲线等。可视化除了用于报告展示,更重要的是可以帮助定位仿真中的异常问题,比如某片区域的SINR异常低,可能是波束指向计算出了偏差,也可能是干扰定义有误。
4.2 位置感知波束成形的代码实现示例
下面给出一段位置感知波束选择模块的参考代码。它实现的功能是:给定基站坐标、用户坐标和码本,返回最优波束索引。
function beamIdx = selectBeamByPosition(bsPos, uePos, steerVecSet, fc) % 通过位置计算方位角和俯仰角,匹配最优波束 % bsPos: 基站坐标 [x, y, z] % uePos: 用户坐标 [x, y, z] % steerVecSet: 码本, 维度为 [Ntotal, numBeams] % fc: 载波频率 % 计算基站到用户的相对向量 delta = uePos - bsPos; azimuth = atan2d(delta(2), delta(1)); % 方位角, 单位:度 distance = norm(delta(1:2)); elevation = atan2d(delta(3), distance); % 俯仰角 % 角度范围统一到 [-180, 180] if azimuth > 180 azimuth = azimuth - 360; elseif azimuth < -180 azimuth = azimuth + 360; end % 遍历码本,基于波束指向角与目标角度差进行匹配 numBeams = size(steerVecSet, 2); angleErr = zeros(1, numBeams); c = physconst('lightspeed'); lambda = c / fc; for n = 1:numBeams aw = steerVecSet(:, n); % 通过码字的相位梯度反推波束指向角 % 适用于均匀面阵/线阵,具体实现依赖阵列结构 az = computeBeamAzimuth(aw, lambda); el = computeBeamElevation(aw, lambda); angleErr(n) = acosd(cosd(azimuth - az) * cosd(elevation) * cosd(el) + ... sind(elevation) * sind(el)); end [~, beamIdx] = min(angleErr); end这个函数的核心逻辑是角度距离比较。这里用球面余弦公式计算两个方向之间的夹角,避免了直接用欧氏距离在角度空间导致的边界跳变问题(比如359度和1度虽然数值相差358度,实际夹角只有2度)。很多初学者在这个细节上栽过跟头,直接用差的绝对值来匹配波束,结果在最边上出现明显的选择错误。
需要说明的是,上述代码中的computeBeamAzimuth和computeBeamElevation是从码字反推波束方向的两个辅助函数,实际实现时需要根据阵元布局来解析。如果用的是DFT码本,这个反推过程会非常直接:依据相位梯度即可算出方向角。这块如果不想费劲,也可以在码本生成时把每个码字对应的方向角一并保存下来,直接查表比较,省时省事。
4.3 干扰抑制效果的量化对比方法
一套仿真模型不能只输出一组结果就完事,关键要能用来回答设计问题。这个项目里最典型的问题就是:位置感知波束成形到底带来了多大的干扰抑制收益?要回答这个问题,需要设计对照组实验。
我在实际仿真中采用的对照组方案是这样设置的:
- 方案A(基准):全向天线或无波束成形的单天线链路,所有基站都以最大功率发射,不考虑波束指向。
- 方案B(非感知波束成形):每个基站始终使用固定波束(比如朝正前方)或随机波束,不做用户追踪。
- 方案C(理想信道估计波束成形):假设基站能通过信道估计获知完美CSI,计算最优MMSE波束,作为性能上限。
- 方案D(位置感知波束成形):本项目的核心方案,按用户位置选波束。
分别跑完这四组配置后,对比用户SINR的CDF曲线。通常结果呈现出来的规律是:
- 方案A的SINR最低,且随着基站密度增加,干扰增大导致SINR明显下降。
- 方案B的SINR优于方案A,说明波束成形本身能带来增益,但固定波束在用户移动时会出现严重的波束失配。
- 方案D的性能接近方案C,尤其在定位精度较高时差距很小,但开销远低于方案D。
- 方案C的性能上限最高,但它的高开销和导频污染问题在UDN中不可忽视。
需要注意的是,SINR均值只是其中一个视角,更有价值的是看SINR的CDF曲线低端(比如5%-tile)。这个指标对应的是边缘用户体验。UDN部署的目标之一就是提升边缘用户性能,如果波束成形方案只提升了平均SINR,却让5%低端用户的SINR更差了,那这个方案在实际网络中是不能用的。我建议每个跑这个模型的人在分析结果时,务必单独看一下5%-tile SINR和相应吞吐量,而不仅仅是平均值的对比。
4.4 实际运行效果与典型结果解读
用默认参数跑完仿真后,典型的结果会呈现这样几个特征:
第一,SINR分布呈明显的双峰形态。峰值对应LOS用户,另一个较低的平台对应NLOS用户,两者之间的差值通常在10到15 dB量级。这说明在毫米波UDN里,链路状态(LOS还是NLOS)对性能的影响远大于干扰和噪声的影响,也验证了信道模型参数设置的正确性。
第二,随着基站密度从50米站间距减小到20米站间距,单用户的平均SINR并不一定下降,反而可能略有上升。这看起来违背直觉,但原因在于:基站离用户更近了,服务链路质量大幅提升,即使干扰源数量变多,期望信号增益还是占了上风。真正的干扰瓶颈体现在边缘用户身上,因此站间距缩小带来的平均增益,并不能掩盖边缘用户SINR的恶化。这也是UDN研究里所谓的“密集化悖论”,用这套模型可以非常直观地观察到这一现象。
第三,位置感知波束成形相对于固定波束的增益,在用户移动速度超过10 km/h后变得更加显著。低速场景下固定波束通过偶发的扫描就能对准用户,性能尚可;但高速场景下固定波束持续失配,性能急剧恶化。这个结论说明,位置感知波束成形在高移动性毫米波场景中是具备明确优势的,这也是它在6G通感一体化研究中备受关注的原因之一。
5. 工程化建议与Matlab仿真代码调试心得
5.1 仿真的常见问题与排查方法
做这个项目时,最容易踩的坑集中在几个地方,我结合自己的调试经验整理了一份排查速查表:
| 现象 | 可能原因 | 排查与解决建议 |
|---|---|---|
| SINR始终很低,低于0 dB | 干扰功率计算错误,把所有基站最大增益都算了进去 | 检查干扰链路的天线增益是否取了实际方向对应的旁瓣增益 |
| 波束成形增益极低,接近0 dB | 波束选择的角度映射有误,选中的波束没有对准用户 | 画出选定波束方向图,叠加用户位置,肉眼确认是否对准 |
| 用户移动时SINR剧烈跳变 | 信道生成缺少空间一致性 | 检查信道模块是否引入了随位置突变的随机种子,应改为随距离缓变的随机过程 |
| 仿真结果每次跑都不一样 | 未固定随机数种子 | 在脚本开头调用rng(固定值) |
| 吞吐量高得离谱 | 使用了香农理想公式,未加效率修正因子 | 乘上0.65到0.75的效率修正,或者直接查MCS表映射 |
| 代码运行极慢 | 嵌套了三重for循环(基站×用户×信道) | 改成矢量化和矩阵化运算,必要时用parfor |
| 边缘用户SINR出现负无穷 | 用户完全接收不到服务基站信号 | 检查服务小区选择逻辑,确认是按RSRP最大原则选择的 |
| 波束方向图和计算的角度对不上 | 阵元坐标系定义不一致 | 统一坐标系,确认方位角是从x轴正方向起算还是y轴正方向起算 |
其中“波束方向图与角度对不上”这个坑我特别想多说两句。Matlab Phased Array Toolbox里默认的角度定义是按方位角从x轴正方向逆时针起算,俯仰角从z轴正方向起算。但很多教材和论文里的定义是方位角从正北方向顺时针起算。不统一这两套约定,就会出现波束看起来在指向30度方向,但实际计算目标角度时算出来的是60度。这类问题相当隐蔽,因为程序不报错、图形也画得出来,只有对比期望角度和实际波束峰值位置的时候才会被发现。建议在仿真脚本最前面加一段注释,明确定义坐标系和角度约定,并且在调试阶段画一次波束方向图叠加目标位置来验证角度映射的正确性。
5.2 提升仿真效率的几个实用技巧
UDN仿真的计算量不容小觑,基站数量加到64个、用户数量加到128个之后,逐对信道生成和干扰计算耗时非常可观。我跑过一版朴素实现的代码,单次蒙特卡洛仿真花了将近四十分钟,后来优化到了七分钟以内,主要做了三件事。
第一件事是预计算。把基站的位置、天线方向图、路径损耗衰减表等固定不变的数据一次性算好存下来,不要在循环里重复计算。尤其是天线方向图函数,如果每个基站、每个方向角都即时调用,计算开销会非常大。
第二件事是矩阵化。将所有用户到所有基站的路径损耗、信道矩阵批量计算,利用Matlab的矩阵运算优势替代for循环。例如计算所有基站到所有用户的距离,可以用pdist2一次性得到距离矩阵,然后再用矢量化的方式计算路径损耗矩阵。这比双层for循环快一个数量级。
第三件事是并行化。蒙特卡洛外层循环通常互不依赖,可以用parfor并行化。使用并行计算池时注意,每个worker都要有自己的随机数流,否则并行后每个worker生成相同的随机数序列,统计结果反而会失真。推荐用RandStream为每个worker创建独立的随机数子流。
5.3 扩展方向:从链路级走向系统级
链路级模型的价值不只是拿到几个SINR数字,它还能作为系统级仿真的基础模块。我现在的工作流里,往往会用这类链路级模型先摸清楚信道和波束成形的物理层规律,然后再把它们封装成链路级接口(如SINR到BLER的映射表),供系统级仿真器调用。
在UDN方向上,这个模型至少还有三个值得扩展的点:一是加入干扰协调机制,让相邻基站之间通过回传链路交换用户位置信息,互相避开波束指向,这需要把模型从单链路扩展成多基站联合优化;二是加入用户调度逻辑,在时频资源上给不同用户分配不同的波束,考察多用户调度与波束扫描的联合设计;三是加入拜占庭故障或定位误差的鲁棒性分析,看位置感知算法在极端定位误差下的失效边界在哪里。
从我自己的使用体验来看,这套位置感知波束成形链路级模型,是我见过的能把“位置信息辅助通信”这个抽象概念真正落到可运行代码和可量化指标里的少数实现之一。它既没有停留在纯理论的波束扫描流程图里,也没有囿于简单的单链路信噪比计算,而是把超密集组网、波束管理、干扰评估这三个毫米波系统最核心的问题揉在了一起。对于想深入研究5G毫米波物理层算法的人来说,顺着这个骨架往里面加自己的模块(比如换一种信道模型、加一种波束成形算法、调整干扰协调策略),都是顺理成章的事情。
最后分享一个我在调试这个模型时学到的小技巧:在分析波束成形增益时,不要只打印SINR均值,一定要把每个用户的波束成形增益单独列出来画成直方图。我遇到过一种情况,平均增益很高,但直方图显示有相当比例的用户增益很低甚至为负值。原因是有几个用户被分配到了错误的码本(因为定位误差导致角度估算偏差),波束非但没有对准,反而因为波束方向性使得接收功率更差了。如果不看分布只看均值,这个系统性缺陷根本发现不了。这种“看分布、不看均值”的习惯,做通信仿真越早养成越好。
这套模型后续可以往通感一体化方向走,也就是把位置感知反过来变成感知功能——基站不仅用位置信息来成形波束,还能通过对回波信号的分析来感知环境中的物体和移动目标。目前6G的研究里,通感一体化是个公认的热点方向,这套模型里已经具备的定位辅助波束成形框架,恰恰是通感一体化最自然的出发点。如果你对6G物理层技术感兴趣,顺着这个项目的代码扩展下去,会走出一条相当顺畅的技术路径。