✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。
🍎个人主页:Matlab科研工作室
🍊个人信条:格物致知。
更多Matlab仿真内容点击👇
⛄ 内容介绍
在毫米波通信中,阻塞建模是模拟和预测无线通信链路中出现的传播路径阻塞效应。以下是针对用户设备(UE)的毫米波阻塞建模的常见方法:
-
几何建模:使用几何建模方法来描述天线、环境物体和传播路径之间的几何关系。这可以通过定义并计算天线和障碍物之间的距离、角度和高度差等参数来实现。
-
模型选择:根据具体应用场景和需,选择合适的阻塞模型。常见的模型包括衰落模型、概率模型、几何模型等。例如,二维地面上的阻塞可以使用基于几何的建模方法,而多径衰落则可以使用衰落模型进行建模。
-
阻塞区域划定:根据环境特征和场景要求,确定阻塞区域的范围和形状。这可以通过虑建筑物、树木、车辆等环境物体的位置和分布情况来进行划定。
-
材料特性考虑:考虑不同材料对毫米波信号的影响,比如反射、折射、散射等特性。不同材料的反射系数穿透损耗可以根据实验数据或理论估计进行建5. 信号传播模拟:利用射线追踪、几何光学等方法对毫米波信号在阻塞环境中的传播进行模拟。这可以通过计算路径损耗、衰落、多径效应等参数来分析信号在UE处的接收功率和衰落情况。
-
验证和优化:使用实测数据或相关模拟工具,对建立的阻塞模型进行验证和优化。比较模拟结果与实际情况的吻合度,调整模型参数和建模方法以提高预测精度。
需要注意的是,毫米波通信中的阻塞建模是一个复杂且活跃的研究领域,涉及到诸多因素,如环境、天线布局、波束赋形、移动性等。实际应用中,还需要结合具体场景和数据进行个性化建模,以满足特定需求和精度要求。
⛄ 部分代码
function test_Animate(s_mobility,s_input,time_step)
v_t = 0:time_step:s_input.SIMULATION_TIME;
for nodeIndex = 1:s_mobility.NB_NODES
%Simple interpolation (linear) to get the position, anytime.
%Remember that "interp1" is the matlab function to use in order to
%get nodes' position at any continuous time.
vs_node(nodeIndex).v_x = interp1(s_mobility.VS_NODE(nodeIndex).V_TIME,s_mobility.VS_NODE(nodeIndex).V_POSITION_X,v_t);
vs_node(nodeIndex).v_y = interp1(s_mobility.VS_NODE(nodeIndex).V_TIME,s_mobility.VS_NODE(nodeIndex).V_POSITION_Y,v_t);
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
figure;
hold on;
%Ish add the BSs and links
hb = 1.8;
hr = 1.4;
ht = 6;
R=100;
frac = (hb-hr)/(ht-hr);
lamT = 2e-4; %%%!!!!!!!!!!change here!!!!!!!!!!!!!!!
nB = s_input.NB_NODES;
nT = poissrnd(lamT*pi*R^2);
rT = R*sqrt(rand(nT,1)); %location of APs
alphaT = 2*pi*rand(nT,1);%location of APs
xT = rT.*cos(alphaT);%location of APs
yT = rT.*sin(alphaT);%location of APs
xTfrac = frac*xT; %blockage zone around UE for each APs
yTfrac = frac*yT;
scatter(xT,yT,30,'r^')
plot([zeros(length(xT),1),xT]',[zeros(length(yT),1),yT]','g')
plot([zeros(length(xTfrac),1),xTfrac]',[zeros(length(yTfrac),1),yTfrac]',...
'r','linewidth',1)
th=0:0.01:2*pi; xx = R*cos(th); yy = R*sin(th);
plot(xx,yy)
scatter(0,0,20,'s')
for nodeIndex = 1:s_mobility.NB_NODES
vh_node_pos(nodeIndex) = plot(vs_node(nodeIndex).v_x(1),...
vs_node(nodeIndex).v_y(1),'.','color',[0.3 0.3 1],...
'MarkerSize',10);
end
title(cat(2,'Simulation time (sec): ',num2str(s_mobility.SIMULATION_TIME)));
xlabel('X (meters)');
ylabel('Y (meters)');
xlim([-100,100])
ylim([-100,100])
name=strcat('Simulation: nT=',num2str(nT),' nB=',...
num2str(nB), ' hT=',num2str(ht));
title(name);
ht = text(-100,90,cat(2,'Time (sec) = 0'));
% ht = text(min(vs_node(1).v_x),max(vs_node(1).v_y),cat(2,'Time (sec) = 0'));
% axis([min(vs_node(1).v_x) max(vs_node(1).v_x) min(vs_node(1).v_y) max(vs_node(1).v_y)]);
hold off;
%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!change file name
%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
v = VideoWriter('simulation1','MPEG-4');
%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
v.FrameRate=10;
% v.CompressionRatio = 3;
for timeIndex = 1:length(v_t);
t = v_t(timeIndex);
set(ht,'String',cat(2,'Time (sec) = ',num2str(t,4)));
for nodeIndex = 1:s_mobility.NB_NODES
set(vh_node_pos(nodeIndex),'XData',vs_node(nodeIndex).v_x(timeIndex),'YData',vs_node(nodeIndex).v_y(timeIndex));
end
set(gcf,'paperunits','inches')
set(gcf,'position',[0 0 550 500])
drawnow;
%Ish save the movie
ax = gca;
ax.Units = 'pixels';
pos = ax.Position;
ti = ax.TightInset;
rect = [-ti(1), -ti(2), pos(3)+ti(1)+ti(3), pos(4)+ti(2)+ti(4)];
F(timeIndex) = getframe(ax,rect);
end
open(v)
writeVideo(v,F);
close(v)
end
⛄ 运行结果
⛄ 参考文献
Jain, Ish Kumar, Rajeev Kumar, and Shiendra Panwar. "Driven by capacity or blockage? a millimeter wave blockage analysis." 2018 30th International Teletraffic Congress (ITC 30). Vol. 1. IEEE, 2018.
Jain, Ish Kumar, Rajeev Kumar, and Shivendra Panwar. "The Impact of Mobile Blockers on Millimeter Wave Cellular Systems." IEEE Journal on Selected Areas in Communications (2019).