最小发射功率下WSN的连通性和覆盖率
2024-08-27 18:03:06
简述:
实验要求我们将传感器节点随机均匀分布在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 图像简单处理过程
画圆及填充的代码:
clear all;
clc;
graph=rand(100,2); %产生随机图
dis=sort(pdist(graph));%产生任意两点之间的递增距离表
theta=0:pi/100:2*pi;
for n=1:size(dis,2);%递增距离
if Connect(graph,dis(n))==1%判断是否连通
d=dis(n);%最小连通距离
break;
end
end
figure(1);
axis equal;
axis([0 1 0 1]);
for n=1:100
hold on
x = d*cos(theta) + graph(n,1);
y = d*sin(theta) + graph(n,2);
plot(x,y,'-');
fill(x,y,'k');
end
figure(2);
axis equal;
axis([0 1 0 1]);
for i=1:100
hold on
x = d*cos(theta) + graph(i,1);
y = d*sin(theta) + graph(i,2);
plot(x,y,'-');
end
最新文章
- Array&;String总结
- bootstraps字体图标无法显示
- OpenGL阴影,Shadow Mapping(附源程序)
- codeforces B. Pasha and String(贪心)
- 移动Web开发的bug及解决方案
- JavaScript与DOM
- c++ shared_ptr 使用注意事项. 2
- Entity Framework 复杂类型
- POI导出数据内存溢出问题
- C++多态性的理解
- C++一些注意点之操作符重载
- Processing.js
- JAVA数字求和
- Ubuntu16.04下安装xunsearch+opencc实现php客户端的中文分词
- 常用jqueryPlugin
- Java 包(package)
- html css float left与 float right的使用说明(转)
- No.01——配置编程环境
- 【转】NativeScript的工作原理:用JavaScript调用原生API实现跨平台
- bzoj 3879: SvT