✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,代码获取、论文复现及科研仿真合作可私信。
🍎个人主页:Matlab科研工作室
🍊个人信条:格物致知。
更多Matlab完整代码及仿真定制内容点击👇
🔥 内容介绍
可重构智能表面(RIS)是一种新型的无线电传播技术,它能够通过控制电磁波的反射和透射来优化无线信道。然而,RIS的实际部署中存在极化和开关损耗等因素,会影响RIS的性能。本文提出了一种新的RIS信道模型,考虑了极化和开关损耗的影响。该模型基于几何光学理论,并对RIS的极化转换和开关损耗进行了建模。仿真结果表明,该模型能够准确地预测RIS信道,并为RIS的优化设计和部署提供指导。
引言
RIS是一种由大量可控反射元件组成的薄平面结构。通过控制反射元件的相位和幅度,RIS可以改变电磁波的传播方向和幅度,从而优化无线信道。RIS在5G和6G通信系统中具有广阔的应用前景,例如覆盖增强、容量提升和干扰抑制。
然而,在RIS的实际部署中,存在极化和开关损耗等因素,会影响RIS的性能。极化损耗是指由于RIS和接收天线极化不匹配而导致的信号能量损失。开关损耗是指由于RIS的开关元件的非理想特性而导致的信号能量损失。
信道模型
本文提出的RIS信道模型基于几何光学理论。该模型假定RIS是一个理想的平面反射器,并对RIS的极化转换和开关损耗进行了建模。
极化转换
RIS的极化转换可以通过Jones矩阵来描述。Jones矩阵是一个2x2矩阵,它描述了RIS对入射电磁波的极化变换。对于一个水平极化的入射波,RIS的Jones矩阵为:
J = [cos(θ) -sin(θ); sin(θ) cos(θ)]
其中,θ是RIS的反射相位。
开关损耗
RIS的开关损耗可以通过一个复数因子来描述。该因子表示开关元件的插入损耗和相移。对于一个理想的开关元件,插入损耗为0 dB,相移为0度。然而,实际的开关元件会引入损耗和相移,因此开关损耗因子为:
α = α_i e^(jφ)
其中,α_i是插入损耗,φ是相移。
信道模型公式
考虑极化转换和开关损耗后,RIS信道模型的公式为:
h = α J h_0
其中,h是RIS信道,h_0是RIS前的信道。
仿真结果
本文使用仿真软件对提出的RIS信道模型进行了验证。仿真结果表明,该模型能够准确地预测RIS信道。图1给出了RIS信道幅度和相位的仿真结果。
[图1 RIS信道幅度和相位仿真结果]
结论
本文提出了一种新的RIS信道模型,考虑了极化和开关损耗的影响。该模型基于几何光学理论,并对RIS的极化转换和开关损耗进行了建模。仿真结果表明,该模型能够准确地预测RIS信道,并为RIS的优化设计和部署提供指导。
📣 部分代码
function [ Coeff, Results ] = CalculateReflect( AntData )
%% Setup
tx = AntData.tx;
ris = AntData.ris;
rx = AntData.rx;
tx_position = AntData.tx.position;
ris_position = AntData.ris.position;
rx_position = AntData.rx.position;
freq = AntData.freq;
LossType = AntData.LossType;
speed = physconst('lightspeed'); % speed of light(unit: m/s)
lambda = speed/freq; % wavelength(unit: Hz)
k = (2*pi)/lambda; % Wave number
a = AntData.ris.area_a;
b = AntData.ris.area_b;
vec_Tx2RIS = ris_position - tx_position;
len_Tx2RIS = sqrt( sum( vec_Tx2RIS.^2 ,1 ) );
vec_RIS2Rx = rx_position - ris_position;
len_RIS2Rx = sqrt( sum( vec_RIS2Rx.^2 ,1 ) );
len_total = len_Tx2RIS + len_RIS2Rx;
RefEff = 8;
%% Amplitude
% Angle of Tx2RIS
[AOD_Tx2RIS, AOA_Tx2RIS] = CalculateAngle( tx_position, ris_position ); % Angles between Tx and Rx
aod_r_Tx2RIS = AOD_Tx2RIS(2).'*pi/180;
aoa_r_Tx2RIS = AOA_Tx2RIS(2).'*pi/180; % phi_i
eod_r_Tx2RIS = AOD_Tx2RIS(1).'*pi/180;
eoa_r_Tx2RIS = AOA_Tx2RIS(1).'*pi/180; % theta_i
% Sigmal of Tx2RIS
[ Vt, Ht ] = LinearInterpolate( tx , aod_r_Tx2RIS , eod_r_Tx2RIS );
V_Tx2RIS = 1 *Vt;
H_Tx2RIS = 1 *Ht;
% Angle of RIS2Rx
[AOD_RIS2Rx, AOA_RIS2Rx] = CalculateAngle( ris_position, rx_position ); % Angles between RIS and Rx
aod_r_RIS2Rx = AOD_RIS2Rx(2).'*pi/180; % phi_s
aoa_r_RIS2Rx = AOA_RIS2Rx(2).'*pi/180;
eod_r_RIS2Rx = AOD_RIS2Rx(1).'*pi/180; % theta_s
eoa_r_RIS2Rx = AOA_RIS2Rx(1).'*pi/180;
% Sigmal of RIS2Rx
[ Vr, Hr ] = LinearInterpolate( rx , aoa_r_RIS2Rx , eoa_r_RIS2Rx );
V_RIS2Rx = Vr *1;
H_RIS2Rx = Hr *1;
% Vector
NorVec = AntData.ris.normal; % Normal vector of RIS
Vec_RIS2Tx = (tx_position-ris_position)/norm(tx_position-ris_position);
Vec_RIS2Rx = (rx_position-ris_position)/norm(rx_position-ris_position);
Vec_Combine = (Vec_RIS2Tx+Vec_RIS2Rx)/norm(Vec_RIS2Tx+Vec_RIS2Rx);
%%% Reflection Matrix (Good conductor)
R_V = -1;
R_H = 1;
% Reflection coefficient
Amp = V_RIS2Rx * (R_V*V_Tx2RIS - 0) - H_RIS2Rx * (0 - R_H*H_Tx2RIS);
% if isequal(sum(abs(NorVec-Vec_Combine)), 0) % Incident Angle = Reflection Angle
% Amp = V_RIS2Rx * (R_V*V_Tx2RIS - 0) - H_RIS2Rx * (0 - R_H*H_Tx2RIS);
% else % Incident Angle ~= Reflection Angle
% Amp = 0;
% % It is not correct in the practical environment because
% % the reflected signal exists except the reflection angle.
% end
%% Phase
psi_lms = k * mod(len_total, lambda);
%% Path Loss
switch LossType
case 'withloss'
loss_dB_Tx2RIS = pathloss( tx_position, ris_position, lambda );
loss_dB_RIS2Rx = pathloss( ris_position, rx_position, lambda );
case 'noloss' % otherwise
loss_dB_Tx2RIS = 0;
loss_dB_RIS2Rx = 0;
end
loss = sqrt( 10.^( 0.1 * -1 * loss_dB_Tx2RIS ) ) * sqrt( 10.^( 0.1 * -1 * loss_dB_RIS2Rx ) );
%% Calculate Coeff.
Coeff = loss * Amp * exp(-1j*psi_lms);
Coeff = RefEff * Coeff;
%% Results
Results.Amp = Amp;
Results.Phase = psi_lms;
Results.PathLoss = loss;
end
%% Pathloss
function [ loss ] = pathloss( tx_position, rx_position, lambda )
txpos = tx_position;
rxpos = rx_position;
d_3d = sqrt(sum( (rxpos-txpos).^2 ));
loss = 20 * log10(4*pi*d_3d / lambda);
end
%% Angle
function [ AOD, AOA ] = CalculateAngle( T_position, R_position )
% Vector in Cart. coordinate
X_vec = R_position(1) - T_position(1);
Y_vec = R_position(2) - T_position(2);
Z_vec = R_position(3) - T_position(3);
angles = zeros( 4, 1 );
% AOD-Horizontal polarization
angles(1,1) = atan2( Y_vec, X_vec ); % [pi, pi]
angles(1, isnan(angles(1,1)) ) = 0;
% AOD-Vertical polarization
angles(3,1) = atan2( Z_vec, sqrt(X_vec.^2 + Y_vec.^2) ); % [pi, pi]
angles(3, isnan(angles(3,1)) ) = 0;
% AOA-Horizontal polarization
angles(2,1) = pi + angles(1,1);
% AOA-Vertical polarization
angles(4,1) = -1 * angles(3,1);
% Change to (0,360) deg.
angles = angles * 180/pi;
angles(1,1) = mod( angles(1,1) , 360);
angles(2,1) = mod( angles(2,1) , 360);
% AOD (1. V / 2. H)
AOD(1,1) = angles(3,1);
AOD(2,1) = angles(1,1);
% AOA (1. V / 2. H)
AOA(1,1) = angles(4,1);
AOA(2,1) = angles(2,1);
% Vertical polarization changes to (0,180) deg.
AOD(1,1) = -1*AOD(1,1) + 90;
AOA(1,1) = -1*AOA(1,1) + 90;
% Horizontal polarization changes to (0,360) deg.
AODtmp = AOD(2,1);
AODtmp_idx = AODtmp < 0;
AODtmp(AODtmp_idx) = AODtmp(AODtmp_idx) + 360;
AOD(2,1) = AODtmp;
AOAtmp = AOA(2,1);
AOAtmp_idx = AOAtmp < 0;
AOAtmp(AOAtmp_idx) = AOAtmp(AOAtmp_idx) + 360;
AOA(2,1) = AOAtmp;
end
⛳️ 运行结果
🔗 参考文献
De-Ming Chian, Chao-Kai Wen, Chi-Hung Wu, Fu-Kang Wang, and Kai-Kit Wong, “A novel channel model for reconfigurable intelligent surfaces with consideration of polarization and switch impairments,” arXiv preprint arXiv:2304.03713, 2023. [Online]. Available: https://arxiv.org/abs/2304.03713.
🎈 部分理论引用网络文献,若有侵权联系博主删除
🎁 关注我领取海量matlab电子书和数学建模资料
👇 私信完整代码和数据获取及论文数模仿真定制
1 各类智能优化算法改进及应用
生产调度、经济调度、装配线调度、充电优化、车间调度、发车优化、水库调度、三维装箱、物流选址、货位优化、公交排班优化、充电桩布局优化、车间布局优化、集装箱船配载优化、水泵组合优化、解医疗资源分配优化、设施布局优化、可视域基站和无人机选址优化、背包问题、 风电场布局、时隙分配优化、 最佳分布式发电单元分配、多阶段管道维修、 工厂-中心-需求点三级选址问题、 应急生活物质配送中心选址、 基站选址、 道路灯柱布置、 枢纽节点部署、 输电线路台风监测装置、 集装箱船配载优化、 机组优化、 投资优化组合、云服务器组合优化、 天线线性阵列分布优化、CVRP问题、VRPPD问题、多中心VRP问题、多层网络的VRP问题、多中心多车型的VRP问题、 动态VRP问题、双层车辆路径规划(2E-VRP)、充电车辆路径规划(EVRP)、油电混合车辆路径规划、混合流水车间问题、 订单拆分调度问题、 公交车的调度排班优化问题、航班摆渡车辆调度问题、选址路径规划问题
2 机器学习和深度学习方面
2.1 bp时序、回归预测和分类
2.2 ENS声神经网络时序、回归预测和分类
2.3 SVM/CNN-SVM/LSSVM/RVM支持向量机系列时序、回归预测和分类
2.4 CNN/TCN卷积神经网络系列时序、回归预测和分类
2.5 ELM/KELM/RELM/DELM极限学习机系列时序、回归预测和分类
2.6 GRU/Bi-GRU/CNN-GRU/CNN-BiGRU门控神经网络时序、回归预测和分类
2.7 ELMAN递归神经网络时序、回归\预测和分类
2.8 LSTM/BiLSTM/CNN-LSTM/CNN-BiLSTM/长短记忆神经网络系列时序、回归预测和分类
2.9 RBF径向基神经网络时序、回归预测和分类