简介:智能反射面(IRS)在无线通信安全领域应用的论文复现代码,重点对应“随N变化”部分的仿真。N表示IRS反射单元数量,资源通过改变N值,考察信号定向性、干扰抑制、信噪比等安全性能指标的变化规律,适合正在做IRS安全方向毕业设计、需要可运行MATLAB代码做定量分析的学生。压缩包共7个文件,核心为4个mlx实时脚本,分别涉及安全传输优化、阵列响应(ULA/URA)计算、SDR求解等模块,另配1个m脚本、1个fig图和1个png图,整体大小仅87KB。脚本结构清晰,图形文件可直接查看相位配置、波束方向图与安全速率曲线,便于快速对照理解不同N值下的系统行为。目前已有2145人学习。通过实际复现,读者能够直观体会增加IRS单元数量带来的波束聚焦增强、窃听泄漏功率下降等效果,并掌握相位优化与安全速率分析的基础代码框架,在此基础上可自行修改参数、拓展场景,为论文实验或毕设答辩提供有力支撑。
1. 复现项目概况:为什么盯上“随N变化”这组曲线
做无线通信安全方向的人应该都清楚,智能反射面(IRS, Intelligent Reflecting Surface)近几年在物理层安全领域几乎是绕不开的话题。IRS的核心理念很朴素:通过在环境中部署大量无源反射单元,主动调控无线信道的传播特性,把信号能量集中到合法用户方向,同时压低窃听者方向的信干噪比——说白了,就是给信号“修一条只通向自己人的路”。
我这次复现的论文是一篇典型的IRS辅助安全通信系统的分析型工作,核心结论围绕反射单元数量N展开。论文里给出了安全速率、保密中断概率等关键指标随N增大的变化趋势。做复现的时候,我特意把“随N变化”这部分拎出来单独跑,原因有两个:一是N是IRS系统最核心的设计自由度,改变N相当于直接改变系统的硬件规模,工程意义最直观;二是这部分仿真涉及的参数扫描逻辑和算法迭代逻辑最集中,踩坑概率也最高。
需要先说明一下,论文的完整仿真体系通常包含多个维度,比如随发射功率变化、随反射单元数量变化、随窃听者位置变化等。我这次只聚焦“随N变化”,也就是说把其他参数固定住,单独扫描N从某个较小值增长到较大值的过程中,各种安全性能指标怎么变。这样做的好处是能够干净地看到IRS规模扩大带来的增益曲线,也能顺便验证理论推导中关于N的渐近表达式是否和蒙特卡洛仿真吻合。
整个复现工作基于MATLAB完成,信道模型采用莱斯衰落(Rician fading),发射端配置多天线,IRS部署在靠近合法用户的一侧,窃听者位置固定但信道状态信息(CSI)存在一定误差。这套配置基本是这类论文的“标准打法”,也是我建议初次尝试复现该方向文章的读者优先选择的环境。
2. 系统模型搭建:从公式到代码的映射过程
2.1 等效信道模型与信号表达
复现的第一步不是写代码,而是把论文里的系统模型彻底吃透。这篇论文采用的是典型的“发射端-IRS-接收端”级联信道模型。发射端配备M根天线,IRS由N个反射单元构成,合法用户和窃听者都是单天线节点。
从发射端到合法用户的直达信道记作H_d,维度是1×M;发射端到IRS的信道记作G,维度是N×M;IRS到合法用户的信道记作h_r,维度是1×N。这样合法用户接收到的信号可以表示为:
y_u = (H_d + h_r^H · Θ · G) · w · s + n_u
这里Θ就是对IRS各个反射单元的相位控制对角矩阵,Θ = diag(e^{jθ_1}, e^{jθ_2}, ..., e^{jθ_N}),θ_n就是第n个反射单元的相位调整量,w是发射端的波束赋形向量,s是发射信号,n_u是噪声。
代码实现时,这一步的关键坑在于矩阵维度的匹配。很多初学者在这里容易把转置和共轭转置搞混,尤其是在生成莱斯信道的时候。我建议每一步都先用size函数验证一下维度,特别是h_r^H · Θ · G这个三重乘积,稍不注意就会维度报错。
2.2 合法用户与窃听者的信干噪比
有了等效信道之后,合法用户和窃听者的接收信干噪比(SINR)就可以直接写出来。合法用户这边的SINR公式是:
γ_u = |(H_d + h_r^H · Θ · G) · w|² / σ_u²
窃听者那边类似,只是换成了窃听链路的信道:
γ_e = |(H_e + h_e^H · Θ · G) · w|² / σ_e²
这里需要特别留意的是,窃听者CSI在论文中假设为不完全已知的,通常用信道估计误差模型来描述。复现的时候要区分“完美CSI”和“非完美CSI”两种情况,非完美CSI情况下需要引入误差方差ε,这会给后面的安全速率推导带来显著差异。
2.3 安全速率的目标函数
安全速率(Secrecy Rate)定义为合法用户速率与窃听者速率之差的正数部分:
R_s = [log₂(1 + γ_u) - log₂(1 + γ_e)]⁺
这个表达式是整个仿真的核心评价指标。随N变化扫描时,我会计算在不同N取值下,经过优化后的安全速率值,然后把曲线画出来。
关于单位这里有个细节:论文里如果用的是自然对数,那速率单位就是nat/s/Hz;如果用log₂,就是bit/s/Hz。我在复现时统一使用bit/s/Hz,这也是大多数国内论文的惯用单位。画图的时候要留意论文原文用的哪个底数,否则数值对不上。
3. 核心算法实现:交替优化与相位离散化
3.1 波束赋形与相移的交替迭代结构
复现“随N变化”部分的难点不在生成随机信道,而在性能优化算法。这类论文几乎无一例外采用交替优化(Alternating Optimization, AO)框架:先固定IRS相移Θ,优化发射波束赋形向量w;再固定w,优化Θ;如此往复迭代直到收敛。
固定Θ时,整个系统退化为一个常规的多天线安全通信问题,最优的w可以通过广义特征值分解(generalized eigenvector)得到。这个在MATLAB里实现很直接,核心就是构造两个矩阵:
A = H_d + h_r^H · Θ · G B = H_e + h_e^H · Θ · G
然后求解广义特征值问题,取最大特征值对应的特征向量方向。
固定w时,优化Θ的目标是最大化合法用户信道增益同时抑制窃听者信道增益。论文中一般采用半正定松弛(SDR)或者MM算法(Majorization-Minimization)来处理。我这次实现采用的是MM算法,因为它的计算复杂度比SDR低不少,而且在大N情况下数值稳定性更好。MM算法的核心是将非凸的目标函数在每次迭代中用一个容易求解的上界函数逼近,逐步迭代到局部最优。
MM算法的关键步骤是构造替代函数。目标函数里包含|A + b^H · Θ · G|²这样的非凸项,通过一阶泰勒展开或者二次上界来逼近。代码实现时我用了大约30行核心迭代代码,每轮迭代复杂度是O(N²),在N=200时单次迭代耗时约0.5秒,完全可以接受。
3.2 相移离散化的处理
实际部署IRS时,每个反射单元的可调相位不可能是连续的,一般用有限比特量化。常见的配置是1比特(只能选0或π)、2比特(0、π/2、π、3π/2)或者3比特。论文里一般会画“连续相移”和“离散相移”两组曲线做对比。
复现时,我在连续相移优化完成后,对每个相移值做量化取整:
θ_quantized = round(θ / Δ) * Δ
其中Δ = 2π / 2^B,B是量化比特数。这一步看起来简单,但其实直接影响最终性能曲线。特别要注意的是:如果你在第k轮交替迭代时就量化,而不是等算法完全收敛后再量化,性能会明显下降。这是因为量化误差会干扰后续波束赋形的优化方向。我实测下来,两种方式的性能差距在N=100时可以达到15%左右。
3.3 收敛判据与迭代次数
交替迭代的收敛判据我使用的是相邻两次迭代安全速率的变化量小于10⁻⁴,同时设置最大迭代次数为50次作为兜底。实际跑下来的经验是:大多数信道实现在10~20次迭代内就能收敛,个别信道条件较差的场景需要接近30次。如果超过40次还没收敛,大概率是MM算法步长设置有问题,这时候建议检查替代函数的系数。
还有一个容易忽略的细节是初始值的选择。论文里一般会说“随机初始化”或者“基于最大化合法信道增益的启发式初始化”。我在复现中发现,采用固定相位全1初始化比随机初始化更稳定。特别是在N较大的场景,随机初始化容易陷入较差的局部最优,导致N增大时安全速率出现“下降”的假象,看起来很不合理,但这其实是优化器没有收敛导致的。
4. 随N变化的核心结论:安全增益的三段式规律
4.1 仿真参数与基线设置
正式扫描N之前,我先把固定参数列出来,这组参数也是论文复现的默认配置:
系统载频3.5GHz,带宽1MHz,发射端天线数M=4,发射信噪比SNR=20dB。IRS部署在发射端与合法用户之间的位置,参考距离(Reference Distance)为50米。莱斯因子K设为3dB,也就是散射分量和直达分量功率相当的水平。窃听者位置离发射端80米,比合法用户更远一些,但信道估计误差的存在使它仍然具有威胁性。
基线对比方案我设置了三个:随机相移IRS、无IRS、以及论文提出的优化方案。随机相移IRS指的是IRS仍然部署,但相移随机生成不参与优化,这能体现“优化”本身的价值。无IRS则是直接去掉反射面,对应IRSn=0的情况。三条曲线画在一起,随N变化的增益阶梯就非常直观了。
N的扫描范围我设置为10到200,步长10。每个N点做5000次独立信道实现取平均,这样蒙特卡洛误差可以控制在可以忽略的水平。如果你机器性能一般,2000次也可以,但曲线的光滑度会稍差,个别点会有小波动。
4.2 安全速率随N的增长规律
从仿真结果看,安全速率随N的变化呈现出明显的三段式规律。
第一阶段是N在10到50之间的快速增益区。这个区间内,优化后的IRS每增加10个反射单元,安全速率大约提升0.4~0.6bit/s/Hz。原因是IRS刚开始部署时,波束赋形自由度增加带来的边际收益非常显著,发射端可以利用IRS将能量更精准地投射到合法用户方向,同时形成对窃听方向的零陷。
第二阶段是N在50到120之间的增益放缓区。N继续增大,安全速率仍然提升,但斜率明显下降,每10个单元大约只提升0.15~0.2bit/s/Hz。这个现象对应的物理直觉是:当反射单元已经足够多时,再增加单元数主要带来的是更精细的波束控制,而不是数量级的能量集中。
第三阶段是N超过120之后的平台区。安全速率增长极其平缓,甚至出现轻微波动。此时N带来的增益基本饱和,继续增加反射单元只会线性增加硬件成本和功耗,对安全速率的边际提升已经微乎其微。
这三段式规律验证了论文里的渐近分析结论:安全速率随N的增长是对数级,而非线性级。这与理论推导中log₂(1 + c·N)的渐近形式吻合得很好。
4.3 离散相移与连续相移的差距
关于离散相移,我对比了1比特、2比特和连续相移三条曲线。2比特量化与连续相移的性能差距大约在5%以内,而1比特量化的性能损失则高达20%~25%。
这说明两个问题:第一,论文里经常声称的“2比特量化性能接近连续相移”在N的整个扫描范围内都成立,这为工程设计提供了信心;第二,1比特量化在N较小时性能损失尤其严重,因为相位调控的自由度实在太低,IRS几乎只能做简单的反射叠加,无法有效进行波束整形。如果工程上必须用1比特器件,建议至少把N加大到100以上才能勉强弥补性能缺口。
5. 复现过程中踩过的三个大坑
5.1 随机信道生成中的种子与相关性陷阱
第一个坑是信道生成的随机性控制。蒙特卡洛仿真需要保证每次循环中合法信道和窃听信道的莱斯分量、散射分量都符合独立分布。如果直接用randn函数生成,不同N值之间的信道会互相影响,导致曲线出现锯齿状波动,看起来像是算法不稳定。
解决方案是给每次信道生成指定随机种子,或者一次性生成所有N值对应的信道矩阵再切片使用。我采用的是后者:先为每个N值预设一个随机流(RandStream),确保5000次实现完全可复现。这样既保证了曲线光滑,也方便排查问题。
5.2 MM算法在大N下的收敛不稳定
第二个坑来自MM算法在N较大时的不稳定现象。N超过150以后,迭代过程中的安全速率偶尔会出现震荡,表现为曲线在相邻两次迭代之间跳变0.2bit/s/Hz左右。排查发现,这是替代函数的上界在N较大时过于松散导致的。
解决方法是引入回溯线搜索(backtracking line search)机制:当目标函数值不升反降时,将步长乘以衰减因子0.5重新计算,直到目标函数恢复上升趋势。加了这层保护之后,所有N值下的迭代都稳定收敛了。
5.3 CSI误差参数的设置与公平对比
第三个坑是关于非完美CSI的误差参数选择。复现时如果给窃听者信道估计误差设置过大,窃听者的SINR会被严重低估,从而高估安全速率。论文原文对误差方差的定义是相对于信道增益归一化的相对误差,我一开始理解成绝对误差,导致安全速率曲线整体偏高。
正确做法是生成信道后先归一化,再乘以误差标准差叠加高斯噪声。完成这步修正后,复现曲线才和论文原图对得上。这里提醒所有复现这类论文的朋友:先画一条完美CSI基线确认逻辑正确,再逐渐引入误差。
6. 复现结果的验证方法与进一步扩展
6.1 如何确认你的曲线是对的
复现论文最怕的就是“画出来了,但是不知道对不对”。我总结了三个验证手段。
第一,查渐近斜率。随N变化的曲线在对数坐标下应当呈现接近线性的趋势,如果画出来是抛物线形或者急剧饱和,大概率是代码有问题。第二,对比随机相移基线的差距。优化方案的效果不能低于随机相移,否则说明优化器没有正常工作。随机相移方案的性能理论上也随N增长,但斜率会显著小于优化方案。第三,用特殊值自检:当N=1时,IRS退化为单个反射单元,此时优化方案与随机相移方案的差距非常小,如果你的代码在N=1时出现巨大性能差,说明算法在小规模情况下出现过拟合或者初始化问题。
6.2 可以扩展的实验方向
复现完基本曲线之后,还可以往几个方向扩展。一是扫描莱斯因子K,看看在强LOS场景和强散射场景下,随N变化的增益规律是否改变。我实测的结果是K值越大,IRS增益越明显,因为相控调控依赖直射路径的相位对齐能力。二是对比不同窃听者位置下的安全速率曲线,观察IRS的最佳部署位置是否随N变化而移动。三是把单天线窃听者换成多天线窃听者,这个扩展会显著提高系统模型的复杂度,但也能检验IRS在对抗更强大窃听者时的鲁棒性。
如果做硬件实验验证,还可以把连续相移优化结果作为理论界,然后用商用移相器芯片的实际量化档位来仿真,观察实际部署时的性能损耗。
6.3 关于仿真代码的性能优化建议
最后说说代码性能。扫描N=10到200、5000次信道实现、每次做AO迭代优化,这个规模在普通PC上用MATLAB跑大约需要3到4小时。如果想提速,建议先对MM算法的内层循环做矢量化,避免在N的循环内部再套一层for循环;其次可以尝试用并行计算(parfor)替代普通for循环,8核CPU大概能提速4~5倍;如果N还要继续增大到500以上,建议考虑把信道矩阵运算迁移到GPU,MATLAB的gpuArray支持全套矩阵操作,实测N=500时GPU加速比大约在10倍以上。
复现工作做到这个程度,已经不只是“抄一遍论文代码”了,而是把中间环节的每个坑都摸了一遍。以后再做IRS相关方向的仿真,不管是加干扰机、加多IRS级联,还是换智能超表面之外的其他可重构器件模型,底层的随机信道搭建、交替优化框架和蒙特卡洛验证流程都可以直接复用。这也是复现论文最大的价值——不是拿到那几张图,而是沉淀下一套你自己能掌控的分析工具箱。
本文还有配套的精品资源,点击获取