智能反射面(IRS)在无线通信安全领域应用的论文复现

article/2025/3/3 18:33:22

引言

Zhang Rui老师的将IRS引入无线通信安全的论文《Secure Wireless Communication via Intelligent Reflecting Surface》有较高的引用量,在此给出要论文的复现及代码。

主要问题

该论文的目的是引入IRS并联合优化基站的主动式波束和IRS的被动式波束,使得抑制窃听者信噪比的同时最大化合法用户处的信噪比。其场景如下:

系统模型图

 因此可以构造出以下的优化问题:

优化问题

 即在基站发射功率的约束下,优化基站和IRS的波束使得保密速率最大化。

给定IRS相位矩阵时,优化基站波束

可简单地将求绝对值的平方进行简单展开,令

将对数相减变换为真数相除,对数是单调递增函数,因此最大化对数,即是最大化真数即可。因此,可简化为以下的问题: 

该结构可以参考文献[1]直接给出解的形式如下: 

\mathbf{w}_{opt}=\sqrt{P_{AP}}\mathbf{u}_{\max}

 其中\mathbf{u}_{\max}对应于矩阵\left( \mathbf{B}+\frac{1}{P_{AP}}\mathbf{I}_M \right)^{-1}\left( \mathbf{A}+\frac{1}{P_{AP}}\mathbf{I}_M \right)的最大特征值对于的归一化特征向量。

给定基站波束,优化IRS相位矩阵

该部分推导较为复杂,可以详细阅读论文,如果有不懂的地方,可以评论或私信交流。主要是利用了分式规划将其转化为一个半正定松弛问题,求解该问题然后利用高斯随机化过程进行求解,转化后的问题如下所示:

 仿真复现

仿真参数设置

clc;clear;epsilon = 1e-3; % 收敛停止条件% 天线数
M = 4; % AP天线数
Nx = 8;
Nz = 8;
N = Nx*Nz; % IRS单元个数 % 用户位置
APloc = [0;0]; % AP位置
userloc = [150;0]; % user位置
edloc= [145;0]; % 窃听者位置
IRSloc = [145;5]; % IRS位置C0 = db2pow(-30); % 参考距离时的路损
D0 = 1; % 参考距离
sigmaK2 = db2pow(-80); % 噪声功率,-80dBmL = @(d, alpha)C0*(d/D0)^(-alpha); % 路损模型% 路损参数
alpha_AU = 3;
alpha_AE = 3;
alpha_AI = 2.2;
alpha_IU = 3;
alpha_IE = 3;% 莱斯因子
K_AU = db2pow(1);
K_AE = db2pow(1);K_AI = db2pow(1);
K_IU = db2pow(1);
K_IE = db2pow(1);R = 1000; % 信道实现数P_AP = db2pow(25); % 发射功率15dBm

 产生信道

论文中说明信道都为独立的莱斯信道,论文中有些信道考虑的是具有空间相关性的莱斯信道,需要在NLoS部分前后乘以一个相关系数矩阵,具体内容可以参考论文[1],为简化,在此没有考虑相关系数矩阵,则可以产生如下信道:

dAE = norm(APloc-edloc);
hAE = sqrt(L(dAE,alpha_AE)/sigmaK2)*(sqrt(1/(1+K_AE))*ones(M,1)'+sqrt(K_AE/(1+K_AE))*(randn(1,M)+1i*randn(1,M))/sqrt(2));dAU = norm(APloc-userloc);
hAU = sqrt(L(dAU,alpha_AU)/sigmaK2)*(sqrt(1/(1+K_AU))*ones(M,1)'+sqrt(K_AU/(1+K_AU))*(randn(1,M)+1i*randn(1,M))/sqrt(2)); dAI = norm(APloc-IRSloc);
thetaIRS = atan(145/5);phi = 0; thetaAP = atan(5/145);
HAI = sqrt(L(dAI,alpha_AI)/sigmaK2)*(sqrt(K_AI/(1+K_AI))*URA_sv(thetaIRS, phi,Nx,Nz)*ULA_sv(thetaAP,M)'+sqrt(1/(1+K_AI))*(randn(N,M)+1i*randn(N,M))/sqrt(2));dIU = norm(IRSloc-userloc);
thetaIRS = -pi/4; phi = 0;
hIU = sqrt(L(dIU,alpha_IU))*(sqrt(K_IU/(1+K_IU))*URA_sv(thetaIRS, phi,Nx,Nz)'+sqrt(1/(1+K_IU))*(randn(1,N)+1i*randn(1,N))/sqrt(2));dIE = norm(IRSloc-edloc);
thetaIRS = 0; phi = 0;
hIE = sqrt(L(dIE,alpha_IE))*(sqrt(K_IE/(1+K_IE))*URA_sv(thetaIRS, phi,Nx,Nz)'+sqrt(1/(1+K_IE))*(randn(1,N)+1i*randn(1,N))/sqrt(2));

 迭代优化

q = 2*pi*rand(1,N); % 随机初始化IRS的相位
Q = diag(exp(1i*q));% 给定q优化W
A = (hIU*Q*HAI+hAU)'*(hIU*Q*HAI+hAU); % 公式(9)
B = (hIE*Q*HAI+hAE)'*(hIE*Q*HAI+hAE); % 公式(10)I_M = eye(M);
C = (B+1/P_AP*I_M)\(A+1/P_AP*I_M);
[V,D] = eig(C); % 特征值分解
[d,ind] = sort(diag(D));
u_max = V(:,ind(end))/norm(V(:,ind(end)));
w_opt = sqrt(P_AP) * u_max;% 给定W优化q
hU = conj(hAU)*conj(w_opt)*(w_opt.')*(hAU.');
hE = conj(hAE)*conj(w_opt)*(w_opt.')*(hAE.');
GU = [diag(conj(hIU))*conj(HAI)*conj(w_opt)*(w_opt.')*(HAI.')*diag(hIU)  diag(conj(hIU))*conj(HAI)*conj(w_opt)*(w_opt.')*(hAU.');...conj(hAU)*conj(w_opt)*(w_opt.')*(HAI.')*diag(hIU) 0];
GE = [diag(conj(hIE))*conj(HAI)*conj(w_opt)*(w_opt.')*(HAI.')*diag(hIE)  diag(conj(hIE))*conj(HAI)*conj(w_opt)*(w_opt.')*(hAE.');...conj(hAE)*conj(w_opt)*(w_opt.')*(HAI.')*diag(hIE) 0]; % 公式(18)
q = SDR(hU,hE,GU,GE,N);Q = diag(q);
R = max(0, log2(1+abs((hIU*Q*HAI+hAU)*w_opt)^2)- log2(1+abs((hIE*Q*HAI+hAE)*w_opt)^2))

 URA导向矢量函数

function ura_sv = URA_sv(theta, phi,Nx,Ny)m = 0:Nx-1;a_az = exp(1i*pi*m*sin(theta)*cos(phi)).';n = 0:Ny-1;a_el = exp(1i*pi*n*sin(phi)).';ura_sv = kron(a_az,a_el);
end

ULA导向矢量函数

function ula_sv = ULA_sv(theta, M)m = 0:M-1;ula_sv = exp(1i*pi*m*sin(theta)).';
end

半正定松弛优化函数

SDR求解问题(22a)

function [q,cvx_optval] = SDR(hU,hE,GU,GE,N)L = 1000; % 高斯随随机化次数cvx_begin sdp quietvariable X(N+1,N+1) hermitianvariable mu1(1,1)maximize(real(trace(GU*X)+mu1*(hU+1)))subject toreal(trace(GE*X))+mu1*(hE+1)==1;for i=1:N+1En = zeros(N+1,N+1);En(i,i)=1;real(trace(En*X)) == mu1;endX ==  hermitian_semidefinite(N+1);mu1 >= 0;cvx_end% 高斯随机化过程%% method 1max_F = 0;max_q = 0;S = X / mu1;[U, Sigma] = eig(S);for l = 1 : Lr = sqrt(2) / 2 * (randn(N+1, 1) + 1j * randn(N+1, 1));q = U * Sigma^(0.5) * r;if q' * GU * q > max_Fmax_q = q;max_F = q' * GU * q;endendq = exp(1j * angle(max_q / max_q(end)));q = q(1 : N);
end

以上程序是给定发射功率的单点优化程序,仿真随着发射功率变化的完整程序以及对比算法如下:

clc;clear;epsilon = 1e-3; % 收敛停止条件% 天线数
M = 4; % AP天线数
Nx = 8;
Nz = 8;
N = Nx*Nz; % IRS单元个数 % 用户位置
APloc = [0;0]; % AP位置
userloc = [150;0]; % user位置
edloc= [145;0]; % 窃听者位置
IRSloc = [145;5]; % IRS位置C0 = db2pow(-30); % 参考距离时的路损
D0 = 1; % 参考距离
sigmaK2 = db2pow(-80); % 噪声功率,-80dBmL = @(d, alpha)C0*(d/D0)^(-alpha); % 路损模型% 路损参数
alpha_AU = 3;
alpha_AE = 3;
alpha_AI = 2.2;
% alpha_IU = 3;
alpha_IU = 2.3;
% alpha_IE = 3;
alpha_IE = 2.5;% 莱斯因子
K_AU = db2pow(1);
K_AE = db2pow(1);% K_AI = db2pow(1);
K_AI = db2pow(10);
% K_IU = db2pow(1);
K_IU = db2pow(10);
% K_IE = db2pow(1);
K_IE = db2pow(10);P = db2pow(-5:5:25); % 发射功率15dBm
frame = 10;
maxIter = 20;
RSDR = zeros(length(P),1);
RMRT = zeros(length(P),1);
RWIRS = zeros(length(P),1);
RUB = zeros(length(P),1);
for p=1:length(P)pP_AP = P(p);for fr = 1:framedAE = norm(APloc-edloc);hAE = sqrt(L(dAE,alpha_AE)/sigmaK2)*(sqrt(K_AE/(1+K_AE))*ones(M,1)'+sqrt(K_AE/(1+K_AE))*(randn(1,M)+1i*randn(1,M))/sqrt(2));dAU = norm(APloc-userloc);hAU = sqrt(L(dAU,alpha_AU)/sigmaK2)*(sqrt(K_AU/(1+K_AU))*ones(M,1)'+sqrt(K_AU/(1+K_AU))*(randn(1,M)+1i*randn(1,M))/sqrt(2)); dAI = norm(APloc-IRSloc);thetaIRS = atan(145/5);phi = 0; thetaAP = atan(5/145);HAI = sqrt(L(dAI,alpha_AI)/sigmaK2)*(sqrt(K_AI/(1+K_AI))*URA_sv(thetaIRS, phi,Nx,Nz)*ULA_sv(thetaAP,M)'+sqrt(K_AI/(1+K_AI))*(randn(N,M)+1i*randn(N,M))/sqrt(2));dIU = norm(IRSloc-userloc);thetaIRS = -pi/4; phi = 0;hIU = sqrt(L(dIU,alpha_IU))*(sqrt(K_IU/(1+K_IU))*URA_sv(thetaIRS, phi,Nx,Nz)'+sqrt(K_IU/(1+K_IU))*(randn(1,N)+1i*randn(1,N))/sqrt(2));dIE = norm(IRSloc-edloc);thetaIRS = 0; phi = 0;hIE = sqrt(L(dIE,alpha_IE))*(sqrt(K_IE/(1+K_IE))*URA_sv(thetaIRS, phi,Nx,Nz)'+sqrt(K_IE/(1+K_IE))*(randn(1,N)+1i*randn(1,N))/sqrt(2));q = 2*pi*rand(1,N); % 随机初始化IRS的相位Q = diag(exp(1i*q));R_old = 0;R_new = 10;count = 0;while(abs(R_old-R_new)/R_new > epsilon && count < maxIter)count = count + 1;% 给定q优化WA = (hIU*Q*HAI+hAU)'*(hIU*Q*HAI+hAU); % 公式(9)B = (hIE*Q*HAI+hAE)'*(hIE*Q*HAI+hAE); % 公式(10)I_M = eye(M);C = (B+1/P_AP*I_M)\(A+1/P_AP*I_M);[V,D] = eig(C); % 特征值分解[d,ind] = sort(diag(D));u_max = V(:,ind(end))/norm(V(:,ind(end)));w_opt = sqrt(P_AP) * u_max;% 给定W优化q, SDRhU = conj(hAU)*conj(w_opt)*(w_opt.')*(hAU.');hE = conj(hAE)*conj(w_opt)*(w_opt.')*(hAE.');GU = [diag(conj(hIU))*conj(HAI)*conj(w_opt)*(w_opt.')*(HAI.')*diag(hIU)  diag(conj(hIU))*conj(HAI)*conj(w_opt)*(w_opt.')*(hAU.');...conj(hAU)*conj(w_opt)*(w_opt.')*(HAI.')*diag(hIU) 0];GE = [diag(conj(hIE))*conj(HAI)*conj(w_opt)*(w_opt.')*(HAI.')*diag(hIE)  diag(conj(hIE))*conj(HAI)*conj(w_opt)*(w_opt.')*(hAE.');...conj(hAE)*conj(w_opt)*(w_opt.')*(HAI.')*diag(hIE) 0]; % 公式(18)[q,upper_bound] = SDR(hU,hE,GU,GE,N);Q = diag(q);R_old = R_new;R = max(0, log2(1+abs((hIU*Q*HAI+hAU)*w_opt)^2)- log2(1+abs((hIE*Q*HAI+hAE)*w_opt)^2));R_new = R;endRSDR(p) = RSDR(p) + R;RUB(p) = RUB(p) + log2(upper_bound);% AP MRT with IRSR_old = 0;R_new = 10;count = 0;while(abs(R_old-R_new)/R_new > epsilon && count < maxIter)count = count + 1;% 给定q优化Ww_opt = sqrt(P_AP)*HAI(1,:)'/norm(HAI(1,:));% 给定W优化q, SDRhU = conj(hAU)*conj(w_opt)*(w_opt.')*(hAU.');hE = conj(hAE)*conj(w_opt)*(w_opt.')*(hAE.');GU = [diag(conj(hIU))*conj(HAI)*conj(w_opt)*(w_opt.')*(HAI.')*diag(hIU)  diag(conj(hIU))*conj(HAI)*conj(w_opt)*(w_opt.')*(hAU.');...conj(hAU)*conj(w_opt)*(w_opt.')*(HAI.')*diag(hIU) 0];GE = [diag(conj(hIE))*conj(HAI)*conj(w_opt)*(w_opt.')*(HAI.')*diag(hIE)  diag(conj(hIE))*conj(HAI)*conj(w_opt)*(w_opt.')*(hAE.');...conj(hAE)*conj(w_opt)*(w_opt.')*(HAI.')*diag(hIE) 0]; % 公式(18)[q,~] = SDR(hU,hE,GU,GE,N);Q = diag(q);R_old = R_new;R = max(0, log2(1+abs((hIU*Q*HAI+hAU)*w_opt)^2)- log2(1+abs((hIE*Q*HAI+hAE)*w_opt)^2));R_new = R;endRMRT(p) = RMRT(p) + R;% without IRSA = (hAU)'*(hAU); % 公式(9)B = (hAE)'*(hAE); % 公式(10)I_M = eye(M);C = (B+1/P_AP*I_M)\(A+1/P_AP*I_M);[V,D] = eig(C); % 特征值分解[d,ind] = sort(diag(D));u_max = V(:,ind(end))/norm(V(:,ind(end)));w_opt = sqrt(P_AP) * u_max;R = max(0, log2(1+abs((hAU)*w_opt)^2)- log2(1+abs((hAE)*w_opt)^2));RWIRS(p) =RWIRS(p) +R;end
endplot(pow2db(P), RSDR/frame,'b-o','LineWidth',2)
hold on
plot(pow2db(P), RMRT/frame,'k-o','LineWidth',2)
plot(pow2db(P), RWIRS/frame,'r-.d','LineWidth',2)
plot(pow2db(P), RUB/frame,'m-.+','LineWidth',2)
grid on
xlabel('P_{AP} (dBm)')
ylabel('Average Secrecy Rate (bps/Hz)')
legend('Alternating Optimization with IRS','AP MRT with IRS','Optimal AP without IRS','Upper bound','Location','northwest')

 仿真结果

复现的结果图
论文原图

可以看出不同算法的趋势基本复现,数值上可能有些不同,可能还是信道建模部分以及反射面个数的问题,不影响对于算法整体的理解。

参考文献

[1] A. Khisti and G. W. Wornell, “Secure transmission with multiple antennas I: the MISOME wiretap channel,”IEEE Trans. Inf. Theory, vol. 56, no. 7, pp. 3088-3104, Jul. 2010.

有任何不清楚的写错或程序有误的地方,欢迎在评论区留言或私信交流!


http://chatgpt.dhexx.cn/article/1pSGrOXa.shtml

相关文章

线性方程组6种数值解法的对比研究

线性方程组数值解法实验研究 一、实验目的 熟悉求解线性方程组的有关理论和方法&#xff1b;会编写Gauss消去法、LU分解法、Jacobi迭代法、Gauss-Seidel迭代法、超松弛(SOR)迭代法及共轭梯度法的程序&#xff1b;通过实际计算&#xff0c;进一步了解各种方法的优缺点&#xf…

高阶查找算法第二篇

目录 平衡二叉树AVLtree数据结构插入左旋右旋右左双旋左右双旋完整AVLTree插入代码如下 AVLTree的验证AVLTree删除【了解】AVLTree性能分析 红黑树红黑树性质RBTree数据结构插入情况一&#xff1a;cur为红&#xff0c;p为红&#xff0c;g为黑&#xff0c;u存在且为红情况二&…

基于有限体积法 (FVM) 和 SIMPLE 算法求解平行板之间层流的速度、压力和温度附 MATLAB 代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;修心和技术同步精进&#xff0c;matlab项目合作可私信。 &#x1f34e;个人主页&#xff1a;Matlab科研工作室 &#x1f34a;个人信条&#xff1a;格物致知。 更多Matlab仿真内容点击&#x1f447; 智能优化算法 …

【论文笔记】AP聚类算法解读

文章目录 引子自己体会吸引信息更新公式归属信息更新公式松弛因子引入 缺点评估 论文原文 引子 网络上已经有很多关于AP算法的介绍了&#xff0c;托他们的福&#xff0c;我更快地理解了AP算法。但是感觉他们不说人话&#xff0c;只说了很抽象的概念&#xff0c;公式理解起来还…

r语言 支持向量机实现_支持向量机解密:R中的实现

r语言 支持向量机实现 Support Vector Machine, popularly abbreviated as SVM is a supervised learning algorithm used for both regression and classification but more commonly used for classification. SVMs have been shown to outperform well in a variety of sett…

2017华为软件精英挑战赛小结

// 2017华为软件精英挑战赛小结 // 不说废话&#xff0c;直接上货&#xff01;希望对目前的参赛者&#xff0c;或日后学习的人&#xff0c;提供一些参考和思路。 #include <赛题说明.pdf> // 见附录文件 赛题说明.pdf 或网址传送门&#xff1a;http://codecraft.hua…

19华为软件精英挑战赛止步复赛

2019年华为软件精英挑战赛&#xff0c;京津东北赛区初赛第13&#xff0c;复赛第18&#xff0c;呦车还没我跑的快。 历时一个多月的华为软件精英大赛落下帷幕&#xff0c;很遗憾的止步了三十二强&#xff0c;从初赛到复赛更改了大大小小的版本将近50多个&#xff0c;通过改进调度…

2021CCPC华为云挑战赛热身赛A题(思维)

题目链接 题意&#xff1a;简单来说必须立足于当前值等于A序列中的一个值才能去增加 【0&#xff0c;ki】范围内的值并且k- -。贪心的想法就是尽可能的让最终自己的数大&#xff0c;我们先从A序列中选一个最大的数且处于【0,m】以内&#xff0c;然后每次转移的时候判断a[i]-a[…

2018华为软件精英挑战赛-复赛赛题

以下描述部分主要是相对初赛赛题的变化点&#xff0c;其他描述和条件均一致&#xff1a; 通用性描述变化点&#xff1a; 物理服务器&#xff1a;为了满足不同虚拟机规格的需求&#xff0c;实际物理服务器规格也有多种&#xff0c;假设云平台共有三种类型的物理服务器&#xff0…

2017华为精英挑战赛总结

大赛官网&#xff1a;http://codecraft.huawei.com/ 赛题解读&#xff1a;http://mp.weixin.qq.com/s/on_l5Rc3Be-DjgUOXftaNw 赛题案例以及编译官方软件包&#xff1a;HUAWEI_Code_Craft_2017_初赛软件包(readme.txt中有详细介绍) 从2017.3.15到2017.4.6&#xff0c;花费三个…

2017华为精英挑战赛64强总结

比赛最后一周的时候每天到凌晨2-3点&#xff0c;最后通宵了一两次&#xff0c;提交大概100多版的版本&#xff0c;使用KWM网络流遗传算法&#xff0c;最终获得了西北赛区49名的成绩。 虽说不是很好&#xff0c;但对我来说是一份难得的经历&#xff0c;这里把比赛心得和体会总结…

华为2019挑战赛

华为软件精英挑战赛总结&#xff08;初赛&#xff09; 赛题&#xff1a; 评分标准&#xff1a; 思路&#xff1a;这是一个典型的动态负载均衡算法的设计&#xff0c;对于每一辆车来说&#xff0c;时间最短意味着路程最优&#xff0c;首先想到迪杰斯特拉来求出每一辆车的最优路径…

2017华为软件精英挑战赛总结

1.题目 本次赛题是一个视频服务器的CDN规划问题 赛题包_百度网盘 2.解题思 2.1 思路一 整数规划 主要是要把模型建出来 包含了 0-1变量->是否布置服务器 边变量-> 表示该边所跑的流量 用glpk试过,变量个数太庞大,内存都开不下,解的效果也不好,只能解很小…

2017华为软件精英挑战赛解分析

后经在复赛赛题上测试&#xff0c;效果并不好&#xff0c;只适合部分数据集&#xff0c;并且没有理论支持&#xff0c;放出来只为启发—— 以下方法初中级样例1s以内&#xff0c;高级样例10s内出最优解—— 不随机&#xff0c;无启发式&#xff0c;走优化的方法。采用反馈-迭代…

2021华为软件精英挑战赛(粤港澳赛区复赛第八)

一、序言 总结一下四月份参加的华为软挑赛&#xff0c;距离现在已经结束了四个多月&#xff0c;终于有时间抽空写写总结了&#xff08;小作文&#xff09;&#xff0c;我们是粤港澳赛区的620&619-F3队&#xff0c;第一次参加这次比赛&#xff0c;本想尝试一下&#xff0c;但…

css 给文字加下划线

css给文字加下划线 直接贴代码 span {cursor: pointer;&:hover {color: #40A9FF;text-decoration: underline;}}

Excel批量设置下划线

Excel批量设置下划线 目录 Excel批量设置下划线 1、框选需要设置的单元格内容&#xff0c;鼠标右键选择“设置单元格格式” 2、点击“自定义”在类型框中输入“ *_ ” 点击“确定”自动生成&#xff08;注意这个 *_符号需要将输入法切换为英文输入法&#xff09; 3、完成…

h5下划线怎么设置_怎么给文加下划线?

怎么给文本加下划线&#xff1f;下面本篇文章就给大家介绍一下HTML页面和word文档中给文本加下划线的方法。有一定的参考价值&#xff0c;有需要的朋友可以参考一下&#xff0c;希望对大家有所帮助。 HTML页面中给文本添加下划线 在HTML页面中怎么给文本添加下划线&#xff1f;…

latex输出下划线

第一种&#xff1a; 如果只是在作者的邮箱...输出下划线的话直接使用 \_ 就可以了 ma\_pengsen 输出结果&#xff1a; 第二种&#xff1a; 如果要在下划线上输出东西&#xff0c;那需要 \underline{XXXXXXX} ma\underline{ABCDEFG} 结果&#xff1a;

speedoffice(Word)文字怎么添加下划线

Word里面编辑文字&#xff0c;有时需要添加下划线&#xff0c;那么怎么添加下划线了&#xff1f;以最常用的speedoffice为列。 1、首先&#xff0c;我们用speedoffice打开Word文件&#xff0c;选中需要添加下划线的文字内容&#xff1b; 2、然后&#xff0c;鼠标点击选择“主页…