MATLAB实例:构造网络连接图(Network Connection)及计算图的代数连通度(Algebraic Connectivity)

1. 图的代数连通度(Algebraic Connectivity)

图的代数连通度:Laplace图谱的次小特征值。

2. 网络连接图(Network Connection)的构造

随机生成一个具有50个节点的传感器网络。节点随机放置在3.5 x 3.5方形区域内,通信距离为0.8。如下图所示,共有159条边,其代数连通度为:0.3007。

3. MATLAB程序

demo_Create_Network_Connection.m

%创建无向图 网络连接图 Network Connection.

clc;

close all;

clear;

Conf.Square = 3.5; %方形区域的边长

Conf.NodeNumber = 50; %节点个数

Conf.CommDist = 0.8; %最大通信距离

is_create_network = 1;

if is_create_network == 1

[ Network, Dists ] = CreateNetworksFunc(Conf);

save Network_1.mat Network

else

load Network_1.mat

end

nodenum = size(Network.Nodes.loc,1); %节点个数

lap_matrix = zeros(nodenum); %节点数*节点数 图的Laplace矩阵:diag(d1,d2,...dn)-邻接矩阵,di为节点i的度

for i=1:nodenum

idx = Network.Nodes.neighbors{i}; %邻接节点的id

lap_matrix(i,idx) = -1; %负的邻接矩阵

lap_matrix(i,i) = length(idx); %对角线元素为节点的度

end

eig_val = eig(lap_matrix); %lap_matrix的特征值

eig_val = sort(eig_val,'ascend'); %从小到大排序,最小特征值为0

algeb_conn = eig_val(2) % algebraic connectivity 代数连通度:lap_matrix的第二小特征值>0,连通图

avg_deg = sum(diag(lap_matrix))/nodenum % average values 节点度的均值

DrawNetworks(Network);

% DrawNetworks(Network, Dists); %把所有的边的长度(通信距离)都标出来了

print(gcf,'-dpng','Network_1.png'); %保存图片

CreateNetworksFunc.m

function [ Network, Dists ] = CreateNetworksFunc(Conf)

% 创建无向图 网络连接图 Network Connection.

num = Conf.NodeNumber; %节点个数

square = Conf.Square; %方形区域的边长

maxDist = Conf.CommDist; %最大通信距离

loc = square*rand(num,2) - square/2; %num*2的随机数 节点坐标

Dists = Euclid_Dist(loc(:,1),loc(:,2)); %节点数*节点数,对角线元素为0

% without self-loop 不存在节点自己到自己的路径,对角线上的元素为无穷大

Dists = Dists + 10*maxDist*eye(num);

Neighbors = cell(num,1);

maxDegree = 0; %节点的最大度,与节点相邻的最大边数

edges = 0; %图的总边的个数,无向图的度/2

for i=1:num

Neighbors{i} = find(Dists(i,:)<=maxDist); %找邻接节点的id

if length(Neighbors{i}) > maxDegree

maxDegree = length(Neighbors{i}); %节点的最大度

end

edges = edges + length(Neighbors{i});

end

Nodes.loc = loc;

Nodes.neighbors = Neighbors;

Network.maxDegree = maxDegree;

Network.edges = edges/2; %% undirected graph

Network.Conf = Conf;

Network.Nodes = Nodes;

end

function dist = Euclid_Dist(X,Y)

% 求两两节点之间的距离,输出[节点*节点]的矩阵,距离矩阵

len = length(X);

xx = repmat(X,1,len); %节点数*节点数

yy = repmat(Y,1,len);

dist = sqrt((xx-xx').^2+(yy-yy').^2); %节点数*节点数

end

DrawNetworks.m

function fig = DrawNetworks( Network )

%画无向图 网络连接图 Network Connection.

% function fig = DrawNetworks( Network, Dists ) %把所有的边的长度(通信距离)都标出来了

num = Network.Conf.NodeNumber; %节点个数

loc = Network.Nodes.loc; %节点坐标

square = Network.Conf.Square; %方形区域的边长

Neighbors = Network.Nodes.neighbors; %邻接节点的id

fig = figure;

plot(loc(:,1),loc(:,2),'ro','MarkerSize',8,'LineWidth',2); %节点是红色圆圈

side=ceil(square/2);

axis([-side,side,-side,side]);

for i=1:num

for k = 1:length(Neighbors{i})

j = Neighbors{i}(k);

% c = num2str(Dists(i,j),'%.2f');

% text((loc(i,1) + loc(j,1))/2,(loc(i,2) + loc(j,2))/2,c,'Fontsize',10); %把所有的边的长度(通信距离)都标出来了

% hold on;

line([loc(i,1),loc(j,1)],[loc(i,2),loc(j,2)],'LineWidth',0.8,'Color','b'); %线是蓝色

end

end

set(gcf, 'Color', 'w'); %白色

end

4. 参考文献

[1] Hua J, Li C. Distributed variational Bayesian algorithms over sensor networks[J]. IEEE Transactions on Signal Processing, 2015, 64(3): 783-798.

[2] 肖恩利, 束金龙, 闻人凯. 图的代数连通度及其点连通度[J]. 华东师范大学学报(自然科学版), 2003, 2003(4):1-4.

随机网络图 matlab,MATLAB实例:构造网络连接图(Network Connection)及计算图的代数连通度(Algebraic Connectivity)...相关推荐

  1. matlab绘图实例-多线图

    目录 matlab线条设定 结果图常用设置(matlab) 一个完整的五线图绘制模板(matlab) 求多项式的根 matlab线条设定 matlab线条设定-官网 matlab线条设定2-官网 ma ...

  2. 2021-01-20 Matlab画图技巧与实例:堆叠图stackedplot

    Matlab画图技巧与实例:堆叠图stackedplot 在MATLAB线图中,一共有3种类型,分别是 线图,包括:plot,plot3,stairs,errorbar,area,stackedplo ...

  3. Matlab plotyy画双纵坐标图实例

    转载自:http://blog.sina.com.cn/s/blog_49d955150100lxoe.html Matlab plotyy画双纵坐标图实例 x = 0:0.01:20; y1 = 2 ...

  4. 使用MATLAB的EEGLAB和BCT工具箱画脑网络连接图

    使用MATLAB的EEGLAB和BCT工具箱画脑网络连接图 一.EEGLAB工具箱插件-FCLAB,以及BCT工具箱 1.1 FCLAB插件及BCT工具箱 1.2 使用GUI界面操作 一.EEGLAB ...

  5. matlab 3个纵坐标,[转载]Matlab plotyy画双纵坐标图实例

    Matlab plotyy画双纵坐标图实例 x = 0:0.01:20; y1 = 200*exp(-0.05*x).*sin(x); y2 = 0.8*exp(-0.5*x).*sin(10*x); ...

  6. 使用线性连接图、蛛网图或分枝与混沌图对参数 a 进行讨论与观察【数学实验】【matlab】

    选择下列三个函数中的至少一个函数进行迭代,分析迭代产生的序列的收敛性. 使用线性连接图.蛛网图或分枝与混沌图对参数 a 进行讨论与观察,会得到什么结论? 本次选用研究 其他的如出一辙. 算法与编程 1 ...

  7. matlab画图总结——二维图plot函数、图形标注和坐标轴控制、饼图、条形图、排列图;三维图的绘制

    Matlab画图总结 1. 二维数据曲线图 1.1 绘制二维曲线的基本函数 1.plot()函数 2. 含多个输入参数的plot函数 3. 含选项的plot函数 4. 双纵坐标函数plotyy 1.2 ...

  8. matlab高程数据点,matlab 对tif数据高程图的处理分析

    temp=z(101:2200,101:2200) 根据图像属性可得此为2300*2300的tif图像,由于需要将其划分为9宫格,所以begin点设置为101,end点设置为2200,temp转化为可 ...

  9. 粒子群算法matlab代码实例使用与参数解读(二维数据)

    粒子群算法与matlab代码实例使用 粒子群算法介绍 粒子群算法使用场景 粒子群的优缺点 实例编程分析 代码分析 参数分析 更多应用场景 在网络中有很多的博客都已经粒子群算法的算法本质讲解的非常清晰明 ...

最新文章

  1. 详细谈电脑ip、域名、内网、外网、localhost、127.0.0.1、网关等通讯基础知识(易懂)
  2. 查询a表有但是b表没有的数据_牛逼!一个上亿数据的报表竟然能做到秒查~
  3. Excel表格复制到word中
  4. ROS安装配置相关问题
  5. dict去重python_python去重,一个由dict组成的list的去重示例
  6. 响应式系统的基本原理
  7. Android wifi驱动的移植 realtek 8188
  8. code回归采访哭 ladies_南太铉直播下跪?星船新男团?Mina归队?Kingdom来了?itzy回归?...
  9. Android安卓|安卓概述、安卓开发、安卓入门、安卓架构
  10. php验证规则表单,PHP Yii框架之表单验证规则大全
  11. websocket初探
  12. 【OpenCV笔记一】Mac安装OpenCV环境及demo
  13. date timestamp mysql_MySQL中DATETIME、DATE和TIMESTAMP类型的区别
  14. PyCharm载入Anaconda环境
  15. 无人驾驶插秧机智能辅助系统_北斗年会 | 智慧农业:插秧“神器”大显身手——雷科防务致力于高精度无人驾驶插秧机前装应用...
  16. GmSSL快速上手指南
  17. C++11 使用智能指针封装 pimpl idom
  18. redis—redis概述
  19. JS中for循环绑定事件
  20. 逍遥模拟器使用指南(三、连点 连击)

热门文章

  1. UE4打包设置和步骤(打最小的包)
  2. 烧钱?公交免费Wi-Fi面临三大挑战
  3. C++语言程序设计第五版 - 郑莉(第二章课后习题)
  4. Python3 使用企业微信 API 发送消息
  5. fcpx怎么合成延时摄影_延时摄影:如何制作你的第一部延时视频,这里有几个小技巧...
  6. OPPO折叠屏发布后,外媒把“矛头”对准三星,Find N和Fold 3哪个好?
  7. TI DLP4500EVM轻度使用——Pattern创建、烧录、投影
  8. 【VBA】批量转化表格格式(xls转xlsx、csv转xlsx)
  9. 8年iOS架构师告诉你,为什么iOS现在不行了!
  10. 布隆,牛逼!布谷鸟,牛逼!