资讯动态

主动RIS辅助ISAC系统联合波束成形MATLAB仿真实现详解

发布时间:2026/9/1 20:40:28 来源:尧图企业网站定制
简介本资源面向电子信息、通信工程及应用数学等专业的本科生与初阶研究者聚焦主动可重构智能表面RIS辅助的集成感知与通信ISAC系统提供波束成形联合设计与性能验证的完整MATLAB实现方案。资源包含69个文件主体为49个功能模块化.m脚本如波束图绘制plotbeampattern.m、信干噪比计算calcommSINR2.m、RIS功率分配calactRISpower.m等辅以3个.mat仿真数据集、11个.zbak备份文件及规范README.md与Read me.txt说明文档整体压缩包仅2.5MB轻量易部署。已有70人学习下载代码采用高度参数化架构关键变量如RIS单元数、UE位置、雷达目标角均可灵活配置算法逻辑分层清晰每函数均含中文注释覆盖信道建模、等效信道求解、凸优化可行性检验、雷达/通信双目标性能联合评估等核心环节特别适合作为课程实验、综合设计或毕业论文的仿真实践基础。 把第一版仿真里的被动RIS换成主动RIS之后我盯着感知SNR曲线愣了半天——提升确实是有的但真正有意思的不是那几dB收益而是整个系统设计的重心变了。ISAC要在同一个发射波形里同时完成通信和感知基站的功率本来就紧张再用传统RIS去搭反射链路BS-RIS-用户这种双跳信道会把路径损耗乘起来远距离场景几乎没法用。主动RIS在每个反射单元上加了放大环节等于在空间里布了一排“有增益的镜子”信号在反射过程中被放大一次这条链路才算真正立得住。这篇文章就把我调通“主动RIS辅助ISAC系统”这段MATLAB实现的过程完整拆开从系统建模、联合波束成形的交替优化算法到性能验证的仿真参数和结果解读全部按可复现的工程路径写出来。适合刚入手RIS/ISAC方向的研究生、做通感一体化的工程师以及想用MATLAB快速验证算法的人。1. 主动RIS为啥是ISAC的“加分项”从乘性衰落和放大器噪声说起1.1 被动RIS在ISAC场景里的乘性衰落问题被动RIS的经典增益逻辑是用大量反射单元把信号能量“聚焦”到某个方向靠阵列增益换覆盖。这个逻辑在通信场景里成立因为它优化的是一条单向链路。但在ISAC里问题变味了。感知任务需要发射信号打到目标再由目标反射回接收端来回两条路径都可能有RIS的参与。如果把RIS放在基站和目标之间的反射链路上等效路径损耗是“基站到RIS”和“RIS到目标”两段损耗的乘积而不是加和。具体算一笔账就清楚了。假设基站到RIS距离30米RIS到目标距离5米路径损耗指数取2.2那么两段各自的损耗分别约10 * 2.2 * log10(30) ≈ 32.5 dB和10 * 2.2 * log10(5) ≈ 15.4 dB级联之后总损耗接近48 dB。这个数字意味着即使基站的发射功率有30 dBm经过RIS反射后到达目标的信号功率也只有-18 dBm左右回波还要再打一次距离损耗回到接收端基本就是噪声水平附近。ISAC系统里基站的功率不是只给一路信号的要同时支撑下行通信和感知探测功率预算比纯通信场景更紧。被动RIS的反射系数模值不超过1它只能调相位不能补偿这个损失。所以很多ISAC论文把被动RIS当作主推方案但真放到远距离目标感知的场景里反射链路往往会成为整个系统的瓶颈。1.2 主动RIS的“有源增益”怎么进入系统模型主动RIS的核心区别在于每个反射单元不再是无源相移器而是带反射型放大器的有源单元。数学上反射系数从 $\phi_n e^{j\theta_n}$ 变成 $\phi_n \beta_n e^{j\theta_n}$其中 $\beta_n$ 是放大因子可以大于1。这个变化带来的直接效果是RIS反射信号时不只是改变方向还额外注入了一部分功率。从链路预算的角度看相当于在中间节点做了一个中继放大把乘性衰落掰回了一部分。我在实验里把 $\beta_n$ 分布在2到5之间时感知回波功率比我用同样的被动RIS单元数高出一个量级。但主动RIS不是白拿的好处。每个放大单元都会引入热噪声噪声功率和放大器增益正相关。反射信号里叠加的噪声会随着 $\beta_n$ 一起增大最终在接收端看到的SINR并不一定随着放大因子单调上升。更麻烦的是每个单元的噪声在接收端是功率累加的N个主动单元会带来N份噪声单元数越多噪声底抬得越高。所以主动RIS的波束成形设计不是简单地“把 $\beta_n$ 调到最大”而是要在一个优化问题里同时权衡信号增强和噪声放大。这也是这个项目跟传统RIS波束成形最本质的区别多了有源增益变量问题从纯相位优化变成了幅度-相位联合优化。1.3 为什么ISAC比纯通信系统更需要主动RIS纯通信场景对被动RIS的容忍度高因为接收端只有一个链路是单向的增加单元数N可以借助阵列增益把能量集中到用户方向效果依然可观。ISAC场景里感知回波要经过目标散射回波路径损耗更大而且目标位置未知无法像通信用户那样提前精确对准。如果感知目标是低RCS雷达散射截面的小型物体例如无人机或行人被动RIS辅助的ISAC系统往往在仿真里遇到一个尴尬情况通信速率指标很好但感知SNR一直上不去。原因就是回波信号淹没在噪声里。主动RIS相当于给感知链路加了一级可控制的增益让回波在到达接收端之前被放大一次感知目标才真正可检测。另一个容易被忽略的点主动RIS可以缓解基站发射功率的矛盾。ISAC里发射波形既要送数据又要测目标把发射功率完全偏向感知会牺牲通信速率。主动RIS在RIS端补了一部分增益基站就不需要把全部功率压在感知方向上通信和感知之间的功率分配更从容。2. 系统建模通信链路、感知回波和三个被优化对象2.1 下行通信和单目标感知的信号模型搭建我搭建的仿真系统考虑一个单基站多天线、单个RIS和K个通信用户的ISAC场景。基站配备M根发射天线RIS部署在基站和目标之间配备N个主动反射单元每个单元都能独立调整相位和放大因子。通信用户假设为K个单天线用户感知目标是空间中一个点目标目标是静止或慢速移动回波在同一个符号周期内可观测。基站发射的信号向量表示为所有用户的通信符号叠加$$ \mathbf{x} \sum_{k1}^{K} \mathbf{w}_k s_k $$其中 $\mathbf{w}_k$ 是第 $k$ 个用户对应的发射波束成形向量$s_k$ 是通信符号。感知信号不额外分配功率完全复用通信信号。这样做的好处是频谱效率高但代价是感知方向上的能量分布受通信波束成形的限制这也是ISAC波束成形设计里最核心的矛盾点。用户 $k$ 的接收信号可以写成$$ y_k \left(\mathbf{h}{\mathrm{d},k}^H \mathbf{h}{\mathrm{r},k}^H \boldsymbol{\Phi} \mathbf{H}{\mathrm{br}}\right) \mathbf{w}k s_k \sum{i \neq k} \left(\mathbf{h}{\mathrm{d},k}^H \mathbf{h}{\mathrm{r},k}^H \boldsymbol{\Phi} \mathbf{H}{\mathrm{br}}\right) \mathbf{w}_i s_i z_k $$其中 $\mathbf{h}{\mathrm{d},k}$ 是基站到用户 $k$ 的直射信道$\mathbf{H}{\mathrm{br}}$ 是基站到RIS的信道矩阵$\mathbf{h}_{\mathrm{r},k}$ 是RIS到用户 $k$ 的信道向量$\boldsymbol{\Phi} \mathrm{diag}(\phi_1, \ldots, \phi_N)$ 是RIS反射系数对角阵$z_k$ 是接收端噪声。需要留意的是RIS反射的路径中还包含了RIS自身放大产生的噪声这个噪声在接收端表现为额外的干扰项建模时不能漏掉。感知回波在基站接收端可以建模为经过目标反射后的信号。考虑到目标方向或者RIS反射路径感知信号能量写成$$ \gamma_{\mathrm{sense}} \frac{\left| \mathbf{H}_{\mathrm{s}}(\boldsymbol{\Phi}) \mathbf{W} \right|F^2}{\sigma_s^2 \sigma{\mathrm{RIS}}^2} $$这里的 $\mathbf{H}{\mathrm{s}}(\boldsymbol{\Phi})$ 是包含RIS相移和放大因子的感知信道矩阵$\sigma{\mathrm{RIS}}^2$ 是RIS放大器带来的等效噪声功率$\sigma_s^2$ 是接收端热噪声功率。2.2 要优化的三个变量发射波束、RIS相移和放大因子这个系统里有三个维度的优化变量它们互相耦合这也是整个问题棘手的原因。第一个是基站的发射波束成形矩阵 $\mathbf{W} [\mathbf{w}_1, \ldots, \mathbf{w}_K]$维度是 $M \times K$。它决定了基站从每根天线、往每个用户方向发射多少功率。ISAC场景下发射波束不仅把信号送给用户还要保证在感知方向上有足够的能量覆盖。第二个是RIS的相移矩阵 $\boldsymbol{\Phi}$ 的对角元素 $\theta_n$取值范围 $[0, 2\pi)$。相位变化决定了反射信号的叠加方向本质上是在做空间波束调向。这个变量在通信场景和感知场景中作用方式不同通信关注的是用户方向上的相干叠加感知关注的是目标方向上的回波增强。第三个是主动RIS特有的放大因子 $\beta_n$取值范围 $[0, \beta_{\max}]$并且整体上要满足功率预算约束 $\sum_{n1}^{N} \beta_n^2 \le P_{\mathrm{RIS}}$。这个约束的物理含义是RIS端放大器总的输出功率不能超过硬件允许的上限。这三个变量不是独立的。发射波束成形会影响照射到RIS上的信号功率RIS相移会影响反射信号的相干性放大因子又决定了RIS端注入多少额外的功率。如果单独优化其中一个另外两个固定问题会简单很多但要同时优化三个问题的复杂度就上来了。2.3 优化命题感知SNR最大化、通信QoS约束与功率约束在ISAC系统中一个通用的做法是把通信需求作为约束把感知性能作为目标。这样做的逻辑是通信速率是系统的基础服务能力有明确的QoS需求感知性能是附加价值在满足通信的前提下尽量做好。反过来做也可以比如以感知CRB为约束最大化通信速率但实际调节起来不如前者直观。我采用的优化命题是$$ \max_{\mathbf{W}, \boldsymbol{\Phi}} \gamma_{\mathrm{sense}}(\mathbf{W}, \boldsymbol{\Phi}) $$$$ \text{s.t.} \quad \mathrm{SINR}_k(\mathbf{W}, \boldsymbol{\Phi}) \ge \gamma_k, \quad k 1, \ldots, K $$$$ |\mathbf{W}|F^2 \le P{\max} $$$$ \sum_{n1}^{N} \beta_n^2 \le P_{\mathrm{RIS}}, \quad 0 \le \beta_n \le \beta_{\max} $$这个命题看着简单实际上是典型的非凸优化问题。相位约束和放大因子约束都定义在复数域的非凸集合上目标函数关于 $\mathbf{W}$ 和 $\boldsymbol{\Phi}$ 的耦合是非线性的。直接拿CVX求解器去怼基本跑不动而且不会有全局最优解。工程上最常用的解决思路是交替优化Alternating Optimization, AO先把RIS变量固定优化发射波束成形再把发射波束成形固定优化RIS反射系数。每一轮子问题都保证比上一轮好迭代若干次后收敛到局部最优解。这种思路理论上没有全局最优的保证但实测下来效果稳定而且每一轮子问题都有成熟的求解路径。3. 联合波束成形怎么解交替优化SDR的完整推导与MATLAB落地3.1 固定RIS变量更新发射波束成形矩阵的闭式解当RIS的相移和放大因子固定时感知SNR的表达式中$\mathbf{H}_s(\boldsymbol{\Phi})$ 变成已知矩阵此时目标函数可以重新整理为关于 $\mathbf{W}$ 的二次型。通信SINR约束也是关于 $\mathbf{W}$ 的二次型约束整个子问题变成一个带二次约束的二次优化问题QCQP。为了在MATLAB里高效求解我把感知SNR写成向量的二次型形式。将 $\mathbf{W}$ 向量化为 $\mathbf{x} \mathrm{vec}(\mathbf{W})$则感知SNR的分子可以写成 $\mathbf{x}^H \mathbf{R}_s \mathbf{x}$分母是噪声功率是一个常数。通信约束变成 $\mathbf{x}^H \mathbf{A}k \mathbf{x} \ge \gamma_k$ 的形式。功率约束是 $\mathbf{x}^H \mathbf{x} \le P{\max}$。如果只有一个用户且没有QoS约束问题退化成最大广义瑞利商最优解就是矩阵对 $(\mathbf{R}_s, \mathbf{I})$ 的最大特征值对应的特征向量。有多个用户和SINR约束时不能直接给闭式解但我实测下来通过CVX求解这种QCQP还是很快的因为维度只有 $MK$对于8天线2用户的场景也就是16维。代码结构大概是这样的function [W_opt] update_W(H_s, H_com, gamma_k, P_max) M size(H_s, 1); K size(H_com, 3); % 每个用户的信道矩阵 cvx_begin sdp quiet variable W(M, K) complex minimize( 0 ) % 占位实际用 maximize感知SNR subject to % 感知SNR目标写成二次型 % 通信SINR约束 % 功率约束 cvx_end end但实际实现里CVX对“最大化一个二次型”这种目标支持不好我一般把问题转化为二分搜索给定一个感知SNR门限 $\eta$检查是否存在可行解然后二分查找最大 $\eta$。这个方法在代码上更稳。3.2 固定发射波束更新RIS反射系数SDR与随机化恢复这是整个问题里最核心也最费时间的一步。固定 $\mathbf{W}$ 后感知SNR和通信SINR都变成关于 $\boldsymbol{\Phi}$ 的非凸函数。我先把 $\boldsymbol{\Phi}$ 的对角元素提取成向量 $\mathbf{x} [\phi_1, \ldots, \phi_N]^T$目标函数可以重新表达为关于 $\mathbf{x}$ 的二次型。以感知SNR为例分子可以展开成$$ \left| \mathbf{h}_s^H \boldsymbol{\Phi} \mathbf{G}s \mathbf{W} \right|^2 \mathbf{x}^H \mathbf{R}{\mathrm{sense}} \mathbf{x} \mathbf{x}^H \mathbf{r}_s \text{常数} $$通信SINR约束类似。这时候问题变成在 $\mathbf{x}$ 的二次型约束下优化 $\mathbf{x}$ 的二次型目标。这个形式还是非凸的因为约束集合是复数单位模和高斯分布的组合。工程上最成熟的做法是半正定松弛SDR。令 $\mathbf{X} \mathbf{x} \mathbf{x}^H$则 $\mathbf{x}$ 的二次型变成 $\mathrm{tr}(\mathbf{R}_{\mathrm{sense}} \mathbf{X})$。去掉秩1约束 $\mathrm{rank}(\mathbf{X}) 1$问题松弛成一个复半正定规划SDP可以用CVX直接求解。MATLAB里的核心代码function [x_opt] update_RIS(R_sense, R_interf, gamma_k, P_RIS) N size(R_sense, 1); cvx_begin sdp quiet variable X(N, N) hermitian semidefinite maximize( real(trace(R_sense * X)) ) subject to % 通信SINR约束 real(trace(R_interf * X)) gamma_k; % 按实际不等式方向调整 % RIS功率约束这里简化为迹约束 real(trace(X)) P_RIS; cvx_end % 提取秩1解 [V, D] eig(X); [~, idx] max(diag(D)); x_hat sqrt(D(idx, idx)) * V(:, idx); % 对主动RIS做幅度投影保证放大因子在允许范围内 beta abs(x_hat); beta min(beta, sqrt(P_RIS / max(sum(beta.^2), 1e-12)) * beta); x_opt beta .* exp(1i * angle(x_hat)); end这里有一个关键细节SDR求解出来的是矩阵 $\mathbf{X}$需要恢复成向量 $\mathbf{x}$。我惯用的做法是取最大特征值对应的特征向量再对幅度做投影。如果最大特征值占比不够高比如小于总迹的80%说明SDR松弛得比较松单次特征向量恢复效果不好需要用高斯随机化生成多个候选向量逐一投影后送到目标函数里挑最优。3.3 交替迭代的收敛判据与初始值设置交替优化的主循环很简单W init_W(M, K, P_max); Phi init_RIS(N); for iter 1:max_iter W_new update_W(H_s, H_com, Phi, gamma_k, P_max); Phi_new update_RIS(H_s, H_com, W_new, gamma_k, P_RIS); obj_new compute_sense_SNR(W_new, Phi_new); if abs(obj_new - obj_old) / obj_old tol break; end obj_old obj_new; end初始值的设置直接影响最终结果。$\mathbf{W}$ 我一般用最大比发射MRT或追零ZF初始化这样第一轮通信约束不会卡太紧。$\boldsymbol{\Phi}$ 的初始相位我推荐直接对准目标方向也就是让RIS反射波束指向感知目标所在方向这样可以保证第一轮感知SNR不会太差。如果用随机相位初始化经常会在前几轮迭代时目标值波动较大。收敛判据我习惯看目标函数的相对变化量而不是看变量变化量。原因是感知SNR在数值上跨度可能很大变量微小的变化可能导致目标值大起大落用目标值做判据更能反映实际状态。迭代次数上限设在50次左右因为SDR的子问题每轮都要跑CVX跑太多轮耗时很长性价比不高。4. 性能验证怎么设计实验从对比曲线到蒙特卡洛结果4.1 仿真参数体系从信道模型到蒙特卡洛次数性能验证的第一步是把参数定下来。参数不是随意选的每一项都要有物理依据。我整理了一份常用的参数表这份表基本可以支撑一套完整的ISAC仿真实验参数建议取值说明基站天线数 $M$8空间自由度足够CVX跑得快RIS单元数 $N$32主动RIS成本高32个单元折中用户数 $K$2便于画QoS约束扫描曲线基站-RIS距离50 m中距离部署场景RIS-用户距离10 m用户靠近RIS体现RIS增益RIS-目标距离15 m目标在RIS反射主瓣内路径损耗指数2.2BS-RIS、2.0RIS-用户参考室内/半开放场景莱斯因子 $\kappa$10 dB视距分量占主导RIS噪声系数4 dB对应放大器的典型噪声系数基站发射功率 $P_{\max}$30 dBm典型小基站功率RIS功率预算 $P_{\mathrm{RIS}}$20 dBm主动RIS放大总功率上限感知目标RCS1 m²对应无人机或中等目标蒙特卡洛次数1000保证统计稳定性信道生成是仿真里最容易被忽略的环节。我采用莱斯信道模型直射分量用阵列响应向量外积生成散射分量用独立同分布的复高斯随机变量生成。基站侧和RIS侧分别设置到达角和离开角这样RIS的波束成形才真正有“方向”可调。% 生成ULA阵列响应 function a array_response(theta, N) a exp(1i * pi * sin(theta) * (0:N-1).) / sqrt(N); end % 生成BS-RIS信道包含LOS和散射 H_br sqrt(PL_br) * ( sqrt(kappa/(1kappa)) * (a_r * a_b) ... sqrt(1/(1kappa)) * (randn(N, M) 1i*randn(N, M)) / sqrt(2) );4.2 主流程代码结构从信道生成、SDP求解到性能统计完整的仿真主循环大致分成四层外层蒙特卡洛、中层交替优化、内层CVX求解、最里层性能指标计算。代码结构如果设计不好很容易变成“改一个参数跑半小时”的尴尬局面。我的做法是把每个功能模块拆成独立函数主脚本只做参数设置和循环调度。% 主脚本伪代码 for mc 1:MC_trials % 1. 生成信道 [H_br, H_ru, H_bu, H_target] generate_channels(params); % 2. 交替优化 [W_opt, Phi_opt] ao_isac(H_br, H_ru, H_bu, H_target, params); % 3. 计算指标通信速率、感知SNR、BER rate(mc) compute_sum_rate(W_opt, Phi_opt, H_br, H_ru, H_bu); sense_snr(mc) compute_sense_snr(W_opt, Phi_opt, H_target, params); % 4. 可选QPSK BER 统计 [ber(mc), ~] simulate_ber(W_opt, Phi_opt, H_br, H_ru, H_bu, params); end % 画图 plot_snr_vs_power(sense_snr, params); plot_rate_vs_qos(rate, sense_snr, params);这里有个性能经验内层的SDP求解是整个仿真最耗时的地方尤其在N比较大时CVX单个SDP可能就要跑好几秒。我建议先把N设成16把整条链路跑通确认算法和指标没问题后再扩大到32或64。否则调试阶段会因为等待时间过长而严重拖慢进度。4.3 结果图怎么看主动RIS vs 被动RIS的三个关键对比我验证性能时固定做三组对比曲线每一组都直接回答一个问题。第一组是感知SNR随基站发射功率的变化曲线。这组曲线一般意义上是最直观的主动RIS在低发射功率区的增益明显因为RIS端的放大弥补了基站功率不足随着基站功率增大主动RIS的增益逐渐被放大器噪声限制曲线斜率比被动RIS略缓但绝对值仍然领先。如果主动RIS曲线出现“先升后平”甚至下降就要检查RIS放大因子是否已经触碰了功率上限或者放大器噪声建模是否合理。第二组是通信可达速率与感知SNR之间的折中曲线Pareto前沿。做法是在通信QoS约束和感知SNR目标之间加权扫描权重得到一系列点。主动RIS的折中曲线整体会更靠外说明它在保证通信速率的同时感知性能的牺牲更小。这是ISAC系统最看重的指标。第三组是误码率BER随SNR的变化曲线。我用QPSK调制做蒙特卡洛仿真取不同的发射SNR值分别跑。主动RIS在中等SNR区间BER下降很快但在高SNR区间可能会出现BER地板。原因就是RIS放大器引入的噪声在发射SNR升高后不再被淹没成为制约误码率的主要因素。如果看到地板不要急着改代码先检查主动RIS的放大器噪声功率设置是否合理。5. 从调通到调优我在MATLAB仿真里踩过的五个实际坑5.1 CVX与求解器的版本匹配问题CVX在较新版本的MATLAB上经常会出现兼容性问题最典型的报错是“Undefined function or variable cvx_begin”或者求解器初始化失败。我这里强调一下一定要用和当前MATLAB版本匹配的CVX版本不要拿好几年前的CVX装到R2022b以上版本里硬跑。CVX官方提供学术免费许可直接用学术许可注册就好不需要绕任何其他渠道。我建议求解器用SDPT3而不是默认的SeDuMi。复数SDP问题里SDPT3的数值稳定性明显更好尤其在RIS单元数N超过32的时候。切换方法很简单cvx_solver sdpt3如果你发现某个SDP问题求解结果反复出现“Inaccurate”警告先试试换求解器往往能解决。5.2 SDR恢复出来的解不满足RIS物理约束SDR求解完得到的 $\mathbf{X}$ 是 $N \times N$ 的矩阵恢复成 $\mathbf{x}$ 后的相位和幅度往往不能直接使用。很多人在这里直接取主特征向量然后用结果发现目标函数下降一大截甚至迭代发散。我的处理流程是先检查主特征值占总迹的比例如果大于0.85直接取特征向量进行幅度投影如果小于这个值用高斯随机化生成20到50个候选向量把每个候选向量投影到可行域内再逐一代入目标函数选最优。等跑通后再回来研究到底哪个恢复策略对特定场景最有效不要上来就追求最优。5.3 主动RIS的放大因子在迭代中膨胀这是一个隐蔽的坑。交替优化过程中如果RIS功率约束写得不对放大因子会在迭代中迅速膨胀目标值看起来越来越高但硬件实现完全没有意义。我在初版仿真里就犯过这个错误约束写成了 $\max_n \beta_n \le \beta_{\max}$却漏掉了总功率约束 $\sum_n \beta_n^2 \le P_{\mathrm{RIS}}$结果算法把每个单元的放大因子都推到了上限感知SNR高得离谱但实际里这么多个放大器同时满功率输出热噪声早就把信号淹没了。正确的做法是在SDR子问题里把RIS功率约束显式写成迹约束同时在每次恢复向量后做一次投影。如果发现 $\sum_n \beta_n^2$ 明显超过 $P_{\mathrm{RIS}}$要对整个 $\boldsymbol{\beta}$ 向量做等比缩放保持相位不变。5.4 感知SNR的口径不一致导致不同方法之间无法对比我在对比自己实现的方法和论文里的结果时发现感知SNR永远对不上。最后查了半天才发现问题出在 “信号功率” 的定义上有人用发射功率有人用接收功率有人用了归一化后的信道增益分母上的噪声功率也有的算上了RIS放大器噪声有的没有算。统一口径特别重要。我的建议是感知SNR统一在接收端定义分子是回波信号实际到达接收端的功率分母是接收端热噪声功率加上RIS放大器噪声功率。仿真代码里要把所有功率换算到同一个参考点比如接收端天线端口。这样才能保证主动RIS和被动RIS的对比有意义。5.5 parfor并行里的CVX求解器坑如果做了蒙特卡洛仿真自然想用parfor把循环并行化。但CVX在parfor下运行有几个需要注意的地方。首先是每个worker都要单独初始化CVX否则会报求解器找不到其次是CVX的许可验证有时会在并行环境下失败报“License manager error”这时候可以把求解器换成Mosek试试或者把并行环境改为进程数少的配置。另外parfor里共享变量要特别小心。我习惯把每次蒙特卡洛的结果存到独立的cell数组或矩阵列里循环结束后再汇总这样避免多worker同时写同一个变量造成的竞态条件。如果不想被这些并行问题困扰小规模仿真直接用for循环串行跑速度慢一点但胜在稳定。跑完整套仿真之后我最大的体会是主动RIS在ISAC里的收益不是一个固定常数而是和基站功率预算、RIS功率预算、放大器噪声系数三个量纠缠在一起的系统级结果。单独把beta调大不一定好单独增加RIS单元数也不一定好真正有用的方法是把三个变量放进同一个优化框架里一起调。最后再给一个小建议如果你只是初次接触这个方向先用N16、K1把整条链路跑通验证代码里每个环节的数值都没有问题再逐步扩大规模不然你会把大量时间耗在SDP求解的等待上而不是花在理解算法本身。本文还有配套的精品资源点击获取

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

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

免费获取报价