zoukankan      html  css  js  c++  java
  • 最小发射功率下WSN的连通性和覆盖率

    简述:

    实验要求我们将传感器节点随机均匀分布在1x1的方格中,然后计算节点的最小共同发射功率(COMPOW),保证网络刚好连通,并计算出这些节点的覆盖率。为了解决这个问题,我们的做法是随机均匀部署100个节点在1x1的方格中,结合判断连通性的算法[1],找出它们刚好连通时每个节点的最小通信半径,然后根据简化的路径损耗模型计算出此时的的发射功率,即我们求的COMPOW值;在计算覆盖率的时候,我们利用微元的思想,将 的方格划分成许多小正方形组成,然后统计覆盖区域小方格个数占总小方格个数的比例,该值近似为所求的覆盖率(方格越多,结果越精确)。

    建模过程:

    首先假设通信半径都等于感知半径,并且每个节点发射功率均相同。
    1. 解最小通信半径
    ① 求出任意节点之间的距离(即通信半径),并递增排列;
    ② 利用实验一连通性的算法从①中递增距离中找出刚好使这些节点连通的距离。即最小通信半径d。
    ③ 利用简化的路径损耗模型计算出最小的共同发射功率 Pcompow:

    2. 求解覆盖率
    我们首先对半径为d的100个圆填充颜色,利用微元的思想,将1x1的方格划分成很多正方形小格,然后计算出覆盖区域所占的小方格数。

    但是划分小方格程序上比较麻烦,于是我们想到了利用图像处理的方法,图像本身存储的就是矩阵,灰度图像矩阵元素的取值范围为p=[0,255],二值化处理后p=0 or 255,p=0代表纯黑色,p=255代表纯白色。于是利用Matlab的imread()函数将产生的图像转化为矩阵,统计里面0的个数(覆盖区域为黑色),再除以总的矩阵大小(这里为341x341),即为所求覆盖率,具体过程如下图:


    图1 图像简单处理过程

    画圆及填充的代码:

     1 clear all;
     2 clc;
     3 graph=rand(100,2);  %产生随机图
     4 dis=sort(pdist(graph));%产生任意两点之间的递增距离表
     5 theta=0:pi/100:2*pi;
     6 for n=1:size(dis,2);%递增距离
     7     if Connect(graph,dis(n))==1%判断是否连通
     8         d=dis(n);%最小连通距离
     9         break;
    10     end
    11 end
    12 figure(1);
    13 axis equal;
    14 axis([0 1 0 1]);
    15 for n=1:100
    16     hold on
    17     x = d*cos(theta) + graph(n,1);
    18     y = d*sin(theta) + graph(n,2);
    19     plot(x,y,'-');
    20     fill(x,y,'k');
    21 end
    22 figure(2);
    23 axis equal;
    24 axis([0 1 0 1]);
    25 for i=1:100
    26     hold on
    27     x = d*cos(theta) + graph(i,1);
    28     y = d*sin(theta) + graph(i,2);
    29     plot(x,y,'-');
    30 end



  • 相关阅读:
    oracle12c中新能优化新特性之热度图和自动数据优化
    Oracle10g以上sysaux表空间的维护和清理
    mysql 及 posgresql之优劣势大比拼
    Oracle外部表的管理和应用
    Oracle ASM 相关的 视图(V$) 和 数据字典(X$)
    Oracle12c功能增强新特性之维护&升级&恢复&数据泵等
    Oracle12c功能增强 新特性之管理功能的增强
    Oracle12c 中RAC功能增强新特性之ASM&Grid
    oracle12c新特点之可插拔数据库(Pluggable Database,PDB)
    SRM-697-DIV2
  • 原文地址:https://www.cnblogs.com/iamlsj/p/3870027.html
Copyright © 2011-2022 走看看