一、目的

(1)在固定节点个数的前提下,仿真求得使网络保持连通的最小通信半径(最低能级)。

(2)在上述节点个数和通信半径的前提下,计算随机布撒的节点的覆盖率。

二、方法描述

(1)首先假设通信半径都等于感知半径,并且每个节点发射功率均相同。在1x1的单位矩形中随机部署100个传感器节点,在每一节点通信半径下进行1000次试验,进而模拟出连通率随通信半径增加的变化趋势。得出在1000点下保持网络连通的最小通信半径。

从上图可以得出,每个节点得最小通信半径为r=0.29。

(2)通过一次随机布撒100个节点,并以每个节点为圆心,绘出半径为0.29的圆。如下图所示:

开始想利用微元的思想,将1x1的区域划分成100个小方格,但之后发现该方法复杂。实验中采用将每个节点的圆(通信覆盖范围)填充为黑色,通过连通图中黑白像素点的比例得到覆盖率。覆盖图如下图所示:

算法实现流程图如下:

试验中注意的是在得到网络的覆盖图之后,需要将其进行处理,仅将1x1的区域截出进行计算,否则实验结果会出现意外错误。

实现重要程序如下:

pp=imread('C:\Users\zhangkun\Desktop\1.png')
p=rgb2gray(pp);
m=0;
len=size(p,1)
lie=size(p,2)
for i=1:len
for j=1:lie
if(p(i,j)==0)
m=m+1;
end
end
end
fugailv=m/(len*lie)%0.9346

三、结论

在节点个数确定时,存在一个使网络保持连通的最小通信半径(最小能级),可以达到节约能量。本实验中选取100个节点随机布撒,通过1000次仿真得到网络的最小通信半径为0.29m,在该半径下一次随机布撒的覆盖率为93.46%。

四、程序代码

L=1;                    % 节点布置区域
theta=0:pi/100:2*pi;
n=100; % 节点个数
node_max=0.29; % 节点最大通信距离
X=unifrnd(0,L,1,n); % 生成n个均匀随机数作为横坐标
B=sqrt(L^2-abs(X).^2); % 计算每个x对应的y范围
Y=unifrnd(0,B,1,n); % 对每个横坐标生成均匀随机数作为纵坐标
plot(X,Y,'.')
hold on
axis equal;
axis([0 1 0 1]);
figure(1)
for i=1:n
hold on
x=node_max*cos(theta)+X(i);
y=node_max*sin(theta)+Y(i);
plot(x,y,'b-')
%fill(x,y,'k');
end
figure(2)
axis equal;
axis([0 1 0 1]);
for i=1:n
hold on
x=node_max*cos(theta)+X(i);
y=node_max*sin(theta)+Y(i);
%plot(x,y,'k-')
fill(x,y,'k');
end pp=imread('C:\Users\kkzhang\Desktop\1.png')
p=rgb2gray(pp);
m=0;
len=size(p,1)
lie=size(p,2)
for i=1:len
for j=1:lie
if(p(i,j)==0)
m=m+1;
end
end
end
fugailv=m/(len*lie)%0.9346

生活中总有不期而遇的温暖与生生不息的希望!

转载需说明出处,笔者总结之前的知识,与大家分享,有问题的可以留给我哦~

利用MATLAB仿真最小发射功率下WSN的连通性和覆盖率的更多相关文章

  1. 最小发射功率下WSN的连通性和覆盖率

    简述: 实验要求我们将传感器节点随机均匀分布在1x1的方格中,然后计算节点的最小共同发射功率(COMPOW),保证网络刚好连通,并计算出这些节点的覆盖率.为了解决这个问题,我们的做法是随机均匀部署10 ...

  2. 利用MATLAB仿真节点个数和节点通信半径与网络连通率的关系

    一.目的 ①在不同节点个数的情况下,用Matlab拟合出连通率与通信半径的关系曲线. ②在不同节点通信半径的情况下,用Matlab拟合出连通率与节点个数的关系曲线. 二.方法描述 在1x1的单位矩形中 ...

  3. matlab读取指定路径下的图像

    利用matlab读取指定路径下的图像 %% 读入指定路径imgFolder下的图像imgName imgFolder = 'F:\博\快盘\图像+数据\images\文章实验图'; %指定路径 img ...

  4. 经典功率谱估计及Matlab仿真

    原文出自:http://www.cnblogs.com/jacklu/p/5140913.html 功率谱估计在分析平稳各态遍历随机信号频率成分领域被广泛使用,并且已被成功应用到雷达信号处理.故障诊断 ...

  5. MATLAB仿真总结

    MATLAB仿真过程中,编写MATLAB代码的时候犯了很多错误,做了很多蠢事.记录下自己犯错的点点滴滴,并引以为戒.使用MATLAB版本为2014a,以下内容如有不当还请指正. 1. 仿真开始前清理工 ...

  6. 极化码的matlab仿真(1)——参数设置

    根据老师的安排,对于极化码的了解从仿真开始. 仿真的手段有很多种.可以利用C,C++,matlab等进行仿真的实现.其中matlab由于具有强大的函数库,和壮观的矩阵运算能力,被(我们老师课题组)看中 ...

  7. (转) 经典功率谱估计及Matlab仿真

    原文出自:http://www.cnblogs.com/jacklu/p/5140913.html 功率谱估计在分析平稳各态遍历随机信号频率成分领域被广泛使用,并且已被成功应用到雷达信号处理.故障诊断 ...

  8. 利用Matlab生成一个网格化的三维球面(生成直角坐标)

    利用Matlab生成一个网格化的三维球面,分别对径向方向.经度方向和纬度方向进行网格化,代码如下: %生成一个笛卡尔坐标系下球面网格的x,y,z坐标 %r为球面距离 %nJingdu,nWeidu分别 ...

  9. 模式识别:利用MATLAB生成模式类

    近期開始了模式识别的学习,在此之前须要对模式和模式类的概念有一个了解,这里使用MATLAB实现一些模式类的生成.在此之前,引用百科上对于模式识别和模式类的定义.也算加深以下了解: 模式识别(Patte ...

随机推荐

  1. Emacs基础使用教程及常见命令整理

    前言:最近使用Emacs,因此整理了官方中文教程中的一些知识点和常用的命令,方便查阅使用. 对于用习惯Windows的人来说,想要入门Emacs不是一件特别容易的事,但好在Emacs提供了官方的教程文 ...

  2. PDCA循环——快速提升软件质量的必备工具

    近年来,软件项目的规模及其复杂性正在以空前的速度增长,互联网用户市场庞大,互联网公司和相应的软件产品层出不穷.快速响应需求变化往往是互联网行业的常态,软件产品的快速开发迭代对于公司迅速占领市场.抢占商 ...

  3. 【论文笔记】A review of applications in federated learning(综述)

    A review of applications in federated learning Authors Li Li, Yuxi Fan, Mike Tse, Kuo-Yi Lin Keyword ...

  4. tensorflwo-gpu win10_64bit 的安装版本问题

    tensorflow 1.3 配 cuda8.0 + cudnn5.1tensorflow 1.4 配 cuda8.0 + cudnn6.0 有没有更大的字体???我要配!!!!!

  5. Linux-流程控制语法-函数-属组

    1.流程控制 1.1 条件选择 1.1.1选择执行if语句 格式: if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ] ... ...

  6. 沁恒CH32V103C8T6开发环境笔记

    CH32V103C8T6 CH32V103C8T6是沁恒的RISC-V内核MCU, 基于RISC-V3A处理器, 内核采用2级流水线处理,设置了静态分支预测.指令预取机制,支持DMA. 主要参数如下 ...

  7. Invocation failed Unexpected end of file from server java.lang.RuntimeException: Invocation failed Unexpected end of file from server

    Android studio 提交 push的时候报错. Invocation failed Unexpected end of file from serverjava.lang.RuntimeEx ...

  8. html单页面通过cdn引入element-ui组件样式不显示问题

    html单页面通过cdn引入element-ui组件样式不显示问题 必须先引入vue,再通过cdn引入element,否则element-ui组件与样式无效. <!DOCTYPE html> ...

  9. 多线程07:async、future、packaged_task、promise

    async.future.packaged_task.promise 本节内容需要包含头文件:#include <future> 一.std::async. std::future 创建后 ...

  10. Random 中的Seed

    C#中使用随机数 看下例 当Random的种子是0时 生成的随机数列表是一样的 也就是说当seed 一样时 审查的随机数时一样的 Random的无参实例默认 种子 时当前时间 如果要确保生成的随机数不 ...