1.算法仿真效果
matlab2022a仿真结果如下:
2.算法涉及理论知识概要
蜂窝网络正在从精心规划的一组大型塔式基站(BSs)对异构基础设施元素的非常规部署,通常还包括微、微微和以及分布式天线。在本文中,我们为下行链路开发易于处理、灵活和精确的模型异构蜂窝网络(HCN),由K层组成随机定位的基站,其中每一层在以下方面可能不同平均发射功率、支持的数据速率和BS密度。假设移动用户连接到最强候选BS,结果信号干扰加噪声比(SINR)当在覆盖范围内,瑞利衰落时,我们得出覆盖概率表达式(相当于中断)在开放和封闭访问下的整个网络上在高SINR状态下,假设一个非常简单的封闭形式精确到−即使在较弱的假设下也是4dB。对于外部验证,我们将其与实际LTE进行比较网络(用于第1层)与其他K− 1正在建模的层作为独立的泊松点过程。在这种情况下,我们的模型精度在1-2 dB以内。我们还导出了平均值随机定位的移动设备实现的速率和平均负载在BSs的每一层上。对于干扰受限的开放接入网络,一个有趣的观察是,在给定的SINR下分层和/或BSs既不会增加也不会降低所有层具有相同目标SINR时的覆盖率或中断。
Voronoi图是通过Delaunay三角网得到的,所以我们先来介绍一下Delaunay三角网的两个重要的性质:
Delaunay三角网是由一个一个的三角形构成的,其中三角形中的每一个顶点都是Voronoi点集中的点。
1、空外接圆性质:在由点集S构成的Delaunay三角网中,每个三角形的外接圆均不包含点集S中的其他任意点,即任何一个Delaunay三角形的外接圆不包含其他任何点。
2、最大的最小角性质:在由点集S所构成的三角网中,Delaunay三角网中三角形的最小角度是最大的,一个简明的解释:2个相邻三角形构成的凸四边形的对角线在相互交换后,6个内角的最小角不再增大。
下面给出Voronoi图的定义:
Voronoi图,又叫泰森多边形或Dirichlet图,它是由一组由连接两邻点直线的垂直平分线组成的连续多边形组成。N个在平面上有区别的点,按照最邻近原则划分平面;每个点与它的最近邻区域相关联。Delaunay三角形是由与相邻Voronoi多边形共享一条边的相关点连接而成的三角形。Delaunay三角形的外接圆圆心是与三角形相关的Voronoi多边形的一个顶点。Voronoi三角形是Delaunay图的偶图;
3.MATLAB核心程序
```global BS_num;
global An_num;
global User_num;
global Gains;
global Factors;
global Loss1;
global shadows;
%参数初始化
lamda = 1e-4;
%grid小区maco个数
BS_num = 7;
%每个基站的天线数
An_num = 30;
User_num = round(0.748*An_num);
%功率
Pts = [32,0.32];
sigmas =-92;
Gains = 0;
Factors = 36.7;
Loss1 = 36.8;
shadows = 0;
%算法模拟次数,通过多次循环,计算平均,提高算法的稳定性。
MTKL = 200;
sigmas2 = 10^(sigmas/10)/1e3;
%
%统计仿真出的SIR结果和数值的SIR结果
SIRv = zeros(MTKL,1e5);
for ijk = 1:MTKL
ijk
%首先构建Grid六边形
[POS_1,POS_2] = func_Grid(lamda);
%定义网络的大尺度衰落
[Fading_DB,Fading] = func_Fading(POS_1,POS_2);
..............................................................................
%大尺度衰减下的选择
Sel_PLdb = Fading_DB(UEsel,Sel_Start);
Sel_PL = Fading(UEsel,Sel_Start);
%信道
H_Channel = func_channel(NSel_Start,NUEsel,Sel_PL);
%预编码
Weight_Channel = func_PreCode(NSel_Start,Smaps,H_Channel,Pts,0);
%计算SIR
for jn = 1:length(intersect(1:length(POS_2(1,:)),UEsel));
[Rs2,PowerX,Sel_diff,NSel_diff,Userid] = func_R2(Weight_Channel,H_Channel,Smaps,UEsel,Sel_Start,jn);
Rs1 = func_R1(Weight_Channel,H_Channel,jn,Sel_diff,NSel_diff);
SIRv(ijk,Userid) = SIRv(ijk,Userid) + func_SIRcal(PowerX,Rs1,Rs2,sigmas2);
end
end
[Pc,SIR] = func_Pc(SIRv);
figure
plot(SIR,Pc,'-r>',...
'LineWidth',1,...
'MarkerSize',6,...
'MarkerEdgeColor','k',...
'MarkerFaceColor',[0.9,0.9,0.0]);
xlabel('SIR threshold');
ylabel('覆盖率');
axis([-6,10,0.1,1]);
save data_grid1.mat SIR Pc
```