网络通信系统的voronoi图显示与能耗分析matlab仿真

117 阅读6分钟

1.程序功能描述

        两层基站(BS)组成整个通讯网络,第 1 层为 Macro 基站记为 ,第 2 层为 Micro 基站记为 ,均服从泊松分布,相互独立,在坐标为 10×10km 的面积内、按照泊松分布随机生成若干个点(随机抛洒两遍 nodes,两层叠加起来)。然后画成 voronoi 图: 也就是在相邻两个点(同种类的点)之间距离的二分之一处画一条线。同时分析网络系统的能耗。

 

2.测试软件版本以及运行结果展示

MATLAB2022a版本运行

1.jpg

2.jpg

3.jpg  

 

3.核心程序

  `%计算每个用户的信号的强度

            for i = 1:Nu

                %针对Macro

                %选择最近的一个基站,计算对应的距离

                for j1 = 1:N1

                    dist_tmp1(j1) = sqrt((xu(i)-x1(j1))^2 + (yu(i)-y1(j1))^2);

                end

                dist1 = min(dist_tmp1);

                P1(i) = Pt1hDeltaB1*dist1^(-alpha1);

 

                %针对Micro

                %选择最近的一个基站,计算对应的距离

                for j2 = 1:N2

                    dist_tmp2(j2) = sqrt((xu(i)-x2(j2))^2 + (yu(i)-y2(j2))^2);

                end

                dist2 = min(dist_tmp2);

                P2(i) = Pt2hDeltaB2*dist2^(-alpha2);

                %选择较大的一个联结

                [V,I] = max([P1(i),P2(i)]);

                J(i)  = I;

            end

            %计算得到的J为每个用户对应选择的基站标号

            J;

 

            %根据如下规则计算SINR

            %定义与 Macro层BS连接的用户集合

            U1 = find(J==1);

            %定义与 Micro层BS连接的用户集合

            U2 = find(J==2);

 

 

            %计算SINR1和RATE1

            %计算SINR2和RATE2

            SINR1   = zeros(1,Nu);

            SINR2   = zeros(1,Nu);

            RATE1   = zeros(1,Nu);

            RATE2   = zeros(1,Nu);

            DeltaT1 = zeros(1,Nu);

            DeltaT2 = zeros(1,Nu);

 

            for i = 1:Nu

                %计算SINR1和RATE1

                if J(i) == 1

                   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

                   for j1 = 1:N1

                       dist_tmp1(j1) = sqrt((xu(i)-x1(j1))^2 + (yu(i)-y1(j1))^2);

                   end

                   for j2 = 1:N2

                       dist_tmp2(j2) = sqrt((xu(i)-x2(j2))^2 + (yu(i)-y2(j2))^2);

                   end      

                   [V1,I1]= min(dist_tmp1);

                   dist1  = V1;

                   FZ     = Pt1hdist1^(-alpha1);

                   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

                   ind1   = 0;

                   tmps   = [];

                   for j1 = 1:N1

                       if (j1 < I1) | (j1 >I1)

                          ind1 = ind1 + 1;

                          tmps(ind1) = Pt1hdist_tmp1(j1)^(-alpha1);

                       end

                   end

                   FM1   = sum(tmps);

                   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

                   tmps  = [];

                   for j1 = 1:N2

                       tmps(j1) = Pt2hdist_tmp2(j1)^(-alpha2);

                   end

                   FM2   = sum(tmps);

                   SINR1(i)   = FZ/(FM1+FM2+10^(delta2/20)/1000);

                   RATE1(i)   = B*log2(1+SINR1(i));

                   DeltaT1(i) = epsl/RATE1(i);

                else

                   SINR1(i)   = 0;

                   RATE1(i)   = 0;

                   DeltaT1(i) = 0;

                end

 

 

                %计算SINR2和RATE2

                if J(i) == 2

                   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

                   for j1 = 1:N1

                       dist_tmp1(j1) = sqrt((xu(i)-x1(j1))^2 + (yu(i)-y1(j1))^2);

                   end

                   for j2 = 1:N2

                       dist_tmp2(j2) = sqrt((xu(i)-x2(j2))^2 + (yu(i)-y2(j2))^2);

                   end       

                   [V2,I2]= min(dist_tmp2);

                   dist2  = V2;

                   FZ     = Pt2DeltaB2h*dist2^(-alpha2);

                   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

                   tmps   = [];

                   for j1 = 1:N1

                       tmps(j1) = Pt1hdist_tmp1(j1)^(-alpha1);

                   end

                   FM1   = sum(tmps);

                   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

                   tmps  = [];

                   ind2  = 0;

                   for j1 = 1:N2

                       if (j1 < I2) | (j1 >I2)

                          ind2 = ind2 + 1;

                          tmps(ind2) = Pt2hdist_tmp2(j1)^(-alpha2);

                       end

                   end

                   FM2   = sum(tmps);

                   SINR2(i)   = FZ/(FM1+FM2+10^(delta2/20)/1000);

                   RATE2(i)   = B*log2(1+SINR2(i));

                   DeltaT2(i) = epsl/RATE2(i);

                else

                   SINR2(i)   = 0;

                   RATE2(i)   = 0;

                   DeltaT2(i) = 0;

                end   

            end

 

            %计算E

            Pbs1 = zeros(1,Nu);

            Pm1  = zeros(1,Nu);

            Pbs2 = zeros(1,Nu);

            Pm2  = zeros(1,Nu);

12_011m`  

4.本算法原理

       网络通信系统的Voronoi图显示与能耗分析是一种结合网络通信和图形学的方法,用于研究网络中各个节点之间的连接关系和能量消耗情况。通过Voronoi图,我们可以直观地展示网络中各个节点的可达性和连接关系,同时分析网络的能耗分布和优化方法。

 

       Voronoi图,也称为泰森多边形,是一种基于点集的分割图形。在这个图中,每个点被表示为一个顶点,每个顶点周围区域内的其他点都距离该点最近。通过Voronoi图,我们可以将一个连续的平面分割为若干个不重叠的区域,使得每个区域都包含一个顶点。

 

       在网络通信系统中,我们可以将网络中的各个节点作为Voronoi图的顶点,节点之间的连接关系作为边。通过这种方式,我们可以将网络拓扑结构转化为图形结构,从而更直观地展示网络的连接关系。

 

       Voronoi图的生成主要依赖于计算几何中的一些基本算法。以下是生成Voronoi图的基本步骤:

 

确定顶点集:在网络通信系统中,顶点集可以由网络中的各个节点构成。

确定距离函数:距离函数用于计算任意两个节点之间的距离。在Voronoi图中,距离函数通常采用欧几里得距离或曼哈顿距离。

计算最小生成树:最小生成树是一种包含所有顶点且边权值最小的树形结构。在网络通信系统中,最小生成树可以用于表示网络中各个节点之间的连接关系。常用的最小生成树算法有Prim算法和Kruskal算法。

生成Voronoi图:根据最小生成树和距离函数,我们可以生成Voronoi图。在生成过程中,对于每个顶点,我们计算其周围区域内的其他顶点距离该点的距离,并将这些顶点连接起来形成边。最终得到的图形就是Voronoi图。

       在网络通信系统中,能耗是一个重要的性能指标。能耗分析旨在研究网络中各个节点的能量消耗情况,以便进行优化和节能。在进行能耗分析时,我们可以考虑以下几个方面:

 

传输能耗:节点在传输数据时需要消耗能量。传输能耗与传输距离、传输速率以及传输功率等因素有关。一般来说,传输距离越远,传输速率越高,传输功率越大,则传输能耗也越大。

接收能耗:节点在接收数据时也需要消耗能量。接收能耗与接收速率、接收功率等因素有关。一般来说,接收速率越高,接收功率越大,则接收能耗也越大。

处理能耗:节点在处理数据时需要消耗能量。处理能耗与处理器的时钟频率、指令执行能耗等因素有关。一般来说,处理器的时钟频率越高,指令执行能耗越大,则处理能耗也越大。

空闲能耗:节点在空闲状态下也需要消耗能量。空闲能耗与节点的待机功耗等因素有关。一般来说,节点的待机功耗越大,则空闲能耗也越大。