十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

IEEE期刊论文精读与完整复现 | F-WMMSE:让天线位置参与波束成形,和速率提升约20%

IEEE期刊论文精读与完整复现 | F-WMMSE:让天线位置参与波束成形,和速率提升约20% 论文精读与Python代码完整复现Yang S, et al. Flexible WMMSE beamforming for MU-MIMO movable antenna communications[J]. IEEE Transactions on Signal Processing, 2025, 73: 4479-4491.如有帮助请引用Yang S, Wan Z, Xiu Y, et al. Flexible WMMSE beamforming for MU-MIMO movable antenna communications[J]. IEEE Transactions on Signal Processing, 2025, 73: 4479-4491.在多用户 MIMO 系统中WMMSE是加权和速率优化中最经典的算法之一。传统 WMMSE 在固定信道上交替更新接收合并矩阵、辅助权重矩阵和发送预编码矩阵。但在可移动天线系统中天线位置也可以参与优化位置改变阵列响应阵列响应进一步改变信道算法因此多出了一层“在哪里发、在哪里收”的自由度。这也是F-WMMSE最值得研究的地方。这篇文章不只介绍论文思路而是结合我们已经完成的 Python 复现项目拆解以下问题如何把候选天线位置写成字典矩阵如何用 RLS-SOMP 同时完成位置选择与波束成形系数估计如何把位置更新嵌入 WMMSE 迭代如何用统一的实验入口复现论文 Fig. 2–6如何通过固定随机流、置信区间和单元测试保证结果可检查、可重复。下面先看整个 Python 复现所实现的算法流程。图1 F-WMMSE Python 复现算法框图。算法在每轮迭代中依次更新接收端位置与合并矩阵、辅助权重矩阵、发送端位置与预编码矩阵最后重新构造物理信道并计算系统和速率。01F-WMMSE 比经典 WMMSE 多优化了什么经典 WMMSE 的核心变量包括F发送预编码矩阵Wₖ用户k的接收合并矩阵Bₖ用户k的辅助权重矩阵。其目标是把难以直接处理的加权和速率最大化问题转换成可交替求解的加权均方误差最小化问题。在固定天线阵列下算法默认信道矩阵Hₖ已经给定。每轮迭代只需要完成Wₖ → Bₖ → F → 重复迭代F-WMMSE 则进一步引入两组变量发送端天线位置集合各用户接收端天线位置集合。因此算法不再只是在一个固定Hₖ上寻找最优F和Wₖ而是同时选择天线位置并根据新位置重新构造信道。可以把两者的差别概括为经典 WMMSE给定信道优化怎么发、怎么收。F-WMMSE同时优化在哪里发、在哪里收以及怎么发、怎么收。02我们如何在 Python 中表示“可移动位置”连续搜索每一根天线的二维坐标(x,z)会形成一个维度很高、变量强耦合的非凸问题。我们的主实验实现先把可移动区域离散成规则候选网格。网格中的每一个点对应一个阵列响应原子所有候选原子共同组成位置字典D。如果候选位置共有M个而最终只需要选择N根天线那么位置优化就可以转写为在 M 个字典原子中寻找 N 个最有用的原子。这实际上是一个稀疏支撑集选择问题。项目中的fwmmse.arrays模块负责这一层物理建模包括平面波阵列响应被选位置的成对阵列响应多用户位置流形固定 UPA 信道构造位置流形对x、z坐标的解析导数。对于第k个用户选定收发位置后的信道在代码中按照下面的结构构造HkAr,k⋅diag(βkL)⋅At,kH H_k A_{r,k} \cdot \text{diag}\left(\frac{\beta_k}{\sqrt{L}}\right) \cdot A_{t,k}^HHk​Ar,k​⋅diag(L​βk​​)⋅At,kH​其中Aₜ,ₖ和Aᵣ,ₖ分别由最终选中的发送端、接收端坐标生成L为传播路径数βₖ为复路径增益。这一步很重要稀疏算法输出的并不只是抽象索引。代码会把索引还原成实际二维位置再由这些位置重新计算物理阵列响应和信道矩阵。03RLS-SOMP 如何同时完成位置选择和系数估计位置字典建立以后下一步是在候选位置中寻找支撑集。我们在fwmmse.sparse.rls_somp()中实现了正则化最小二乘 SOMP。每次选择一个位置时算法执行四步计算所有候选字典原子与当前残差的相关性选出尚未使用且相关性最高的原子在当前支撑集上求解正则化最小二乘问题更新残差直到选满所需天线数。支撑集S上的系数更新为Xs(DsHDsγI)−1DsHY Xₛ (DₛᴴDₛ γI)⁻¹DₛᴴYXs​(DsH​Ds​γI)−1DsH​Y这里的γ不是一个随意加入的常数。它来自 WMMSE 子问题中的功率约束或正则项使位置选择与波束成形系数更新能够在同一个优化结构中完成。与只挑选“最强位置”不同SOMP 每次都会根据新的支撑集重新估计全部系数并更新残差。因此后续位置是在解释前面位置尚未覆盖的信息而不是对同一方向重复选择。项目测试还构造了正交字典样例验证 RLS-SOMP 能准确恢复预设支撑位置并检查返回的稠密系数矩阵是否与字典索引保持一致。04一轮 F-WMMSE 在代码里具体做了什么主算法位于fwmmse.beamforming.flexible_wmmse()。每轮迭代不是简单调用一次稀疏恢复而是依次完成接收端和发送端两次位置选择。第一步更新接收端位置与合并矩阵给定当前发送预编码矩阵F代码为每个用户建立接收位置字典并把接收合并子问题重写成正则化稀疏逼近问题。随后调用 RLS-SOMP选择Nᵣ个接收位置计算这些位置对应的接收合并系数生成新的等效接收信道。第二步更新辅助权重矩阵根据当前接收合并矩阵和等效信道计算误差矩阵Eₖ再更新BkEk−1 B_k E_k^{-1}Bk​Ek−1​代码同时计算Bₖ的矩阵平方根用于构造发送端稀疏优化的目标矩阵。第三步更新发送端位置所有用户的等效信道被堆叠到统一的发送位置字典中。代码再次调用 RLS-SOMP从候选发送网格中选择Nₜ个位置。由于多个用户共享同一组基站天线这里需要在所有用户共同形成的目标上寻找公共支撑集。第四步重构真实信道并更新预编码矩阵得到收发位置后代码不直接沿用中间的字典近似而是利用选定坐标重新构造每个用户的物理信道Hₖ。随后求解最终的正则化预编码系数执行总功率归一化并记录当前迭代的系统和速率。这正是图1中最关键的闭环位置选择 → 信道重构 → 波束成形更新 → 和速率评估 → 下一轮位置选择05为什么项目中还实现了离网格位置细化规则网格便于把位置优化转化为稀疏选择但也存在网格失配真正更优的位置可能位于两个网格点之间。因此我们还在fwmmse.offgrid中实现了离网格位置细化模块。它利用位置流形对x、z的解析导数对新选中的位置进行一阶局部更新并加入三类保护坐标必须位于给定可移动区域内任意两根天线必须满足最小间距如果更新导致目标函数变差则拒绝该次更新。这里需要明确区分本文 Fig. 2–6 的主复现实验使用网格化flexible_wmmse()离网格模块是项目中已经实现并测试的扩展能力不与主实验曲线混为一谈。06Python 项目如何保证实验可以重复无线通信仿真最容易被忽略的并不是公式而是实验控制。同一条曲线如果更换随机信道、初始预编码矩阵或并行进程数结果都可能变化。为此我们在fwmmse.experiments中统一管理 Fig. 2–6 的实验配置。本项目的默认设置包括载波频率f꜀ 3 GHz波长λ 0.1 m候选网格间隔λ/2发送天线数Nₜ 16每个用户接收天线数Nᵣ 4每用户数据流数D 4算法迭代次数25默认随机种子2024每个数据点1000 次独立蒙特卡洛实现。随机数流由“全局种子、图编号、面板编号和 realization 编号”共同派生。因此只要参数不变无论使用一个还是多个 worker某个 realization 都对应同一组信道与初始化。并行计算放在 realization 层而不是算法内部。项目还将底层 BLAS 线程数限制为1避免多进程与矩阵库同时扩张线程造成资源争用。每个数据点最终保存1000 次实现的均值样本标准差95% 置信区间实际 realization 数量。每幅图同时输出 PNG、PDF 和 CSV。图片用于阅读CSV 用于检查每个点的统计量。07Fig. 2算法是否能够稳定收敛图2 不同 SNR 下 MMSE、WMMSE 与两种移动区域配置的 F-WMMSE 迭代结果。每个点为1000次蒙特卡洛实现的均值。图2比较了SNR −5 dB和SNR 5 dB时的收敛过程。在第25次迭代时我们的 Python 结果为SNR −5 dBMMSE 为3.23WMMSE 为11.38两种 F-WMMSE 配置分别达到14.62和15.70。SNR 5 dBMMSE 为19.46WMMSE 为31.94两种 F-WMMSE 配置分别达到38.38和39.95。在−5 dB下较大移动区域的 F-WMMSE 相比 WMMSE 提升约38.0%在5 dB下提升约25.1%。更值得注意的是F-WMMSE 的性能增益并非来自一次性的初始化优势。曲线随着接收位置、发送位置和波束成形系数的交替更新逐步上升并在有限迭代内趋于稳定。08Fig. 3不同用户数下SNR 增大后会发生什么图3 用户数为2和4时的和速率随 SNR 变化结果。在SNR 10 dB时K 2WMMSE 为34.06较大移动区域的 F-WMMSE 为41.54提升约21.98%K 4WMMSE 为46.57较大移动区域的 F-WMMSE 为55.82提升约19.86%。当 SNR 较低时噪声仍是主要限制因素随着 SNR 提高多用户干扰和空间自由度的重要性上升。F-WMMSE 可以通过位置选择主动改变不同用户的等效信道因此在中高 SNR 区域保持了明显优势。09Fig. 4 与 Fig. 5移动区域为什么不是越小越好图4 不同路径数下接收端移动区域参数变化对和速率的影响。图4中当接收端网格边长参数为2时候选点总数为2² 4恰好等于接收天线数Nᵣ 4。此时没有额外位置可供选择因此 F-WMMSE 与固定位置 WMMSE 的结果重合。当该参数增大到8时L 5F-WMMSE 从30.90提升到34.05相比 WMMSE 提高约10.18%L 10F-WMMSE 从32.08提升到36.45提高约13.63%。图5 不同路径数下发送端移动区域参数变化对和速率的影响。图5也出现了相同现象。当发送端网格边长参数为4时候选点总数为4² 16恰好等于发送天线数Nₜ 16算法同样没有额外的位置选择自由度。当该参数增大到12时L 5F-WMMSE 达到36.17相比 WMMSE 的30.97提升约16.81%L 10F-WMMSE 达到38.27相比 WMMSE 的31.89提升约20.01%。这两幅图从代码层面揭示了一个很直观的结论可移动天线的增益不是由“移动”这个标签自动产生的而是来自候选位置数大于实际天线数后出现的选择自由度。10Fig. 6多径数量会怎样影响位置自由度图6 路径数从1增加到21时不同算法的平均和速率。当L 1时WMMSE 的和速率为22.04两种 F-WMMSE 配置分别为23.22和23.31增益相对有限。当L 21时WMMSE 为32.49较小移动区域的 F-WMMSE 为39.02较大移动区域达到41.07。后者相比 WMMSE 提升约26.38%。多径数量增加后空间信道中可利用的结构更加丰富。更大的候选位置集合能够从这些路径中寻找更有利的相位组合因此位置自由度的价值更加明显。11Paper-to-Code Mapping公式如何落到项目文件为了避免“论文看懂了但不知道代码从哪里读”下面给出这次 Python 复现的核心映射。fwmmse/arrays.py构造阵列响应、候选位置字典、实际位置响应与物理信道。fwmmse/beamforming.py::mmse_precoder()计算固定位置线性 MMSE 基线。fwmmse/beamforming.py::wmmse()实现经典 WMMSE交替更新Wₖ、Bₖ和F。fwmmse/beamforming.py::flexible_wmmse()实现 F-WMMSE 主循环联合更新收发位置与波束成形矩阵。fwmmse/sparse.py::rls_somp()完成稀疏支撑选择与正则化系数估计。fwmmse/sparse.py::ols_mmv()提供多测量向量稀疏恢复对照实现。fwmmse/offgrid.py实现坐标局部细化、区域边界与最小间距约束。fwmmse/experiments.py管理 Fig. 2–6 的参数扫描、随机流、并行仿真和统计。fwmmse/plotting.py输出 PNG、PDF 和 CSV。fwmmse/cli.py提供统一的实验命令行入口。如果准备阅读源码建议顺序是arrays.py → sparse.py → beamforming.py → experiments.py先理解位置字典和 RLS-SOMP再看 F-WMMSE 主循环会比直接从实验脚本追调用关系更清楚。12我们还做了哪些数值验证除了生成曲线项目还包含9项测试覆盖平面波响应的单位模与位置排列顺序被选位置响应与完整网格响应的一致性x、z解析导数与有限差分结果的一致性信道矩阵维度与数值有限性预编码矩阵总功率归一化和速率结果的有限性与非负性WMMSE 每轮输出及最终功率约束RLS-SOMP 与 OLS-MMV 的支撑恢复离网格位置更新的区域边界与最小天线间距。本次整理文章前我们重新执行了这9项测试全部通过。这些测试不能代替理论证明但能够尽早发现数组排列、共轭转置、功率缩放、位置索引和导数实现中的常见错误。对于复杂数值算法这一步往往和“把主函数跑通”同样重要。13如何运行这套 Python 复现安装项目及测试依赖后可以先用一次 realization 做快速检查python-mfwmmse reproduce--figureall--realizations1--workers1复现本文使用的完整统计配置python-mfwmmse reproduce--figureall--realizations1000--workers4也可以只运行某一幅图python-mfwmmse reproduce--figure3--realizations1000--workers4最终结果写入outputs/fig2至outputs/fig6。每个目录包含一张 PNG 图片一份 PDF 矢量图一份带均值、标准差和95%置信区间的 CSV 数据。14从这次复现中真正应该掌握什么F-WMMSE 的价值不只是“比 WMMSE 多优化一组位置变量”。更值得学习的是它把三个原本分散的问题连接了起来用 WMMSE 处理多用户速率优化用稀疏支撑集表示天线位置选择用实际选定位置重构信道再返回波束成形闭环。而从复现角度看一套可信的科研代码也不应只有一条最终曲线。它还应该包括明确的模块划分、可追踪的公式映射、可重复的随机实验、可检查的 CSV 数据和针对关键数值操作的测试。后续我们还会继续拆解这套 Python 项目包括RLS-SOMP 的逐行代码解析F-WMMSE 一次完整迭代的矩阵维度Fig. 2–6 的参数配置与绘图流程如何修改天线数、用户数、路径数和移动区域如何把离网格位置细化接入新的实验。如果你正在研究可移动天线、MU-MIMO、WMMSE 或稀疏优化需要论文复现完整代码欢迎关注「无线通信科研笔记」。我们会持续分享无线通信论文解读、Python 算法实现、仿真实验复现以及论文公式到可运行代码的完整映射。论文信息题目Flexible WMMSE Beamforming for MU-MIMO Movable Antenna Communications作者Songjie Yang, Zihang Wan, Yue Xiu, Boyu Ning, Yong Li, Yuanwei Liu, Chau Yuen期刊IEEE Transactions on Signal Processing, Vol. 73, 2025DOI10.1109/TSP.2025.3625145
返回列表