一、目的

①在不同节点个数的情况下,用Matlab拟合出连通率与通信半径的关系曲线。

②在不同节点通信半径的情况下,用Matlab拟合出连通率与节点个数的关系曲线。

二、方法描述

在1x1的单位矩形中随机部署传感器节点,而且假设每个节点的通信半径一样。在每一组节点个数和节点通信半径下进行1000次试验,进而分别模拟出连通率随节点数增加以及通信半径增加的变化趋势。

关键算法即判断节点网络是否具有连通性,算法流程图如下:

关键的程序设计在于找到与节点相连的节点的递归调用,通过不断的搜索邻接矩阵中的1,并在连通向量中标记已找到为连通的的点,最后通过计算连通向量的总和判断是否连通。之后通过改变节点个数k和通信半径r并嵌套以下实现1000次的连通判断计算连通率:

for cishu=1:1000
p=rand(k,2);
c=Connect(p,r);
liantong=liantong+c;
end
liantonglv(i)=liantong/1000;
plot(r,liantonglv(i),'b-*')

(1)在不同节点个数情况下,用Matlab拟合出连通率与通信半径r的关系曲线如下图:

在实验过程中,取通信半径r=0.5,节点个数k=50的网络拓扑图如下所示:

对于不同的节点个数及不同的网络规模下,随着通信半径的增加,网络连通率也在增加。但当通信半径增加到某个临近值时,网络连通率近似维持在100%。且随着节点个数的增加,临界通信半径减小。

(2)在不同通信半径R情况下,用Matlab拟合出连通率与节点数量n的关系曲线如下图:

在实验过程中,取通信半径r=0.35,节点个数k=30的网络拓扑图如下所示:

第4张图中当只有一个节点时,连通率为1,所以出现连通率曲线锐减的现象。具有不同节点通信半径的WSN,随着节点个数的增加,网络连通率也在增加。当节点个数增加到某个临界值时,网络连通率近似维持100%。且随着节点通信半径的增加,临界节点个数减小。

三、结论

①给定节点数目,概率上随机WSN保持连通的节点通信半径存在下限。

②给定节点的通信半径,概率上随机WSN保持连通的节点个数存在上限。

四、MATLAB程序代码

function [ C ] = Connect( graph,r )
adjmatrix=1.-im2bw(squareform(pdist(graph)),r); %生成邻接矩阵
len=size(adjmatrix,1);
quit=0;
for n=1:len
if sum(adjmatrix(n,:))==1 %排除孤立点
quit=1;
end
end %判断连通性
if quit~=1
connected(len)=0; %已连接节点
connected(1)=1;
connected=findconnected(1,adjmatrix,connected);%找到与节点1连接的节点
if sum(connected)==len
C=1;
else
C=0;
end
else
C=0;
End function [connected]=findconnected(start,adjmatrix,connected)
leaf=find(adjmatrix(start,:)==1);%找出与节点start直接相连的节点
len=size(leaf,2) ;
flag=0;
nflag=1;
for n=1:len
if connected(leaf(n))==0;%若节点已在连接向量(connected)中则跳过
flag(nflag)=leaf(n);
nflag=nflag+1;
end
end
len=size(flag,2) ;
if flag~=0
for n=1:len
connected(flag(n))=1;
end
for n=1:len
connected=findconnected(flag(n),adjmatrix,connected);%查找当前节点的子节点
end
end

如果自己向后退缩,就会被人推着向前。---黑柳彻子

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

利用MATLAB仿真节点个数和节点通信半径与网络连通率的关系的更多相关文章

  1. 利用MATLAB仿真最小发射功率下WSN的连通性和覆盖率

    一.目的 (1)在固定节点个数的前提下,仿真求得使网络保持连通的最小通信半径(最低能级). (2)在上述节点个数和通信半径的前提下,计算随机布撒的节点的覆盖率. 二.方法描述 (1)首先假设通信半径都 ...

  2. [LeetCode] Count Complete Tree Nodes 求完全二叉树的节点个数

    Given a complete binary tree, count the number of nodes. Definition of a complete binary tree from W ...

  3. [LeetCode] 222. Count Complete Tree Nodes 求完全二叉树的节点个数

    Given a complete binary tree, count the number of nodes. Note: Definition of a complete binary tree ...

  4. Leetcode 222:完全二叉树的节点个数

    题目 给出一个完全二叉树,求出该树的节点个数. 说明: 完全二叉树的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置. ...

  5. 二叉树节点个数题目[n0,n1,n2]

    若完全二叉树的节点个数为2N-1,则叶节点个数为()    A)N-1        B)2×N        C)2N-1        D)2N解析:    结点拥有的子树数为结点的度    证明 ...

  6. [Swift]LeetCode222. 完全二叉树的节点个数 | Count Complete Tree Nodes

    Given a complete binary tree, count the number of nodes. Note: Definition of a complete binary tree ...

  7. HDU 5441 Travel(并查集+统计节点个数)

    http://acm.hdu.edu.cn/showproblem.php?pid=5441 题意:给出一个图,每条边有一个距离,现在有多个询问,每个询问有一个距离值d,对于每一个询问,计算出有多少点 ...

  8. PAT甲题题解-1004. Counting Leaves (30)-统计每层叶子节点个数+dfs

    统计每层的叶子节点个数建树,然后dfs即可 #include <iostream> #include <cstdio> #include <algorithm> # ...

  9. 利用函数来得到所有子节点号& 利用函数来取得最高级的节点号

    在Oracle 中我们知道有一个 Hierarchical Queries 通过CONNECT BY 我们可以方便的查了所有当前节点下的所有子节点.但很遗憾,在MySQL的目前版本中还没有对应的功能. ...

随机推荐

  1. Percona停服俄罗斯

    2022年3月9日,MySQL重要分支Percona宣布,他们将停止与俄罗斯和白俄罗斯的组织开展新业务,直至另行通知. Percona为支持员工而采取的一些行动如下: 已经在乌克兰目前安全的部分获得了 ...

  2. Java指令重排序在多线程环境下的应对策略

    一.序言 指令重排在单线程环境下有利于提高程序的执行效率,不会对程序产生负面影响:在多线程环境下,指令重排会给程序带来意想不到的错误. 本文对多线程指令重排问题进行复原,并针对指令重排给出相应的解决方 ...

  3. MySQL备份迁移之mydumper

    简介 mydumper 是一款开源的 MySQL 逻辑备份工具,主要由 C 语言编写.与 MySQL 自带的 mysqldump 类似,但是 mydumper 更快更高效. mydumper 的一些优 ...

  4. HashSet与TreeSet的区别

    HashSet元素唯一,无序,依靠hashcode(),toString()实现元素的唯一性 TreeSet元素唯一,有序,依靠bTo实现比较,即继承Comparable类并重写compareTo(O ...

  5. .NET性能优化-你应该为集合类型设置初始大小

    前言 计划开一个新的系列,来讲一讲在工作中经常用到的性能优化手段.思路和如何发现性能瓶颈,后续有时间的话应该会整理一系列的博文出来. 今天要谈的一个性能优化的Tips是一个老生常谈的点,但是也是很多人 ...

  6. 理解 Object.defineProperty

    理解 Object.defineProperty 本文写于 2020 年 10 月 13 日 Object.defineProperty 用于在一个对象上定义新的属性或修改现有属性并返回该对象. 什么 ...

  7. .netcore6.0自己配置swagger

    环境:.net core6.0 一.安装依赖包:Swashbuckle.AspNetCore 二.右击项目->属性->生成->输出,勾选文档文件,然后配置文件生成路径,注意是相对路径 ...

  8. arts-week9

    Algorithm 521. Longest Uncommon Subsequence I - LeetCode Review 如何搭建一个私有的CDN? 大部分情况下,我们使用市场上现有的 CDN ...

  9. python文件操作拓展与认识函数

    目录 文件内光标的移动(了解即可) 前言 控制光标移动seek()方法 文件的修改 函数 语法结构 简单的使用 作业 答案 文件内光标的移动(了解即可) 前言 在文件的内置方法中,read()方法是可 ...

  10. 双webview模式,子窗口打不开或者无法切换

    iOS 真机调试时,发现window.open 无效.可以结合plusReady里面不执行一起参考,博主在当时遇到这个问题只查询了资料,而后并没有来得及自己亲自验证以下方法的可行性.来日再遇上mui的 ...