📄 is_connected_boolean.m
字号:
%**************************************************************************
%** File name : is_connected_boolean.m
%** Author : Liufengwei (English name:andy)
%** Creation date : 4,23,2007,Monday
%** Modified date:
%** Parameter explanation : See the note in the program
%**************************************************************************
% ** Input: NodesXY--the coordinate of point in two dimensional--size:Nodenum*2
% range--transmission range of every node
% ** output: y--if the network is connected,return1;else return 0
% ** Goal: simulate the formula in paper<On the minimum node degree and connectivity of a wireless multihop network>
% ** Explanation : We calculate whether the network is connected if every
% node has the same transmission range by flooding algorithm
%** Program process: initialize simulation parameter, then
%************************************************************************
function y = is_connected_boolean(NodesXY, range,square_edge)
%NodesXY = 1000*(rand(500, 2)) ;
%***********first initialize simulaiton parameters***************
Nodenum = length(NodesXY) ; % nodenum
cluster = zeros(1, Nodenum) ; % store the nodes belong to the cluster
%temp_dis = zeros(1, Nodenum);
Nodes_dis = zeros(1, Nodenum); % store the node distance
temp_dis = zeros(9, Nodenum);
valid_to_n = zeros(1, (Nodenum-1)); % store the nodes connected to n which don't exist in cluster
cluster_down = 2;
cluster_sum =1 ; % the sum number of nodes in the cluster
cluster(1) = 1 ;
index =1 ; % the node index in cluster
y= 0 ;
while 1
n = cluster(index) ;
%********* ********calculate toroidal distance(begins)**********************
X = NodesXY(n, 1);
Y = NodesXY(n, 2);
temp_dis(1, :) = sqrt(sum((NodesXY - ones(Nodenum, 1)*NodesXY(n,:))'.^2)) ;
NodesXY(n,1) = X + square_edge ;
temp_dis(2, :) = sqrt(sum((NodesXY - ones(Nodenum, 1)*NodesXY(n,:))'.^2)) ;
NodesXY(n,1) = X - square_edge ;
temp_dis(3, :) = sqrt(sum((NodesXY - ones(Nodenum, 1)*NodesXY(n,:))'.^2)) ;
NodesXY(n,2) = Y - square_edge ;
temp_dis(4, :) = sqrt(sum((NodesXY - ones(Nodenum, 1)*NodesXY(n,:))'.^2)) ;
NodesXY(n,2) = Y + square_edge ;
temp_dis (5, :) = sqrt(sum((NodesXY - ones(Nodenum, 1)*NodesXY(n,:))'.^2)) ;
NodesXY(n,1) = X ;
temp_dis(6, :) = sqrt(sum((NodesXY - ones(Nodenum, 1)*NodesXY(n,:))'.^2)) ;
NodesXY(n,2) = Y - square_edge ;
temp_dis(7, :) = sqrt(sum((NodesXY - ones(Nodenum, 1)*NodesXY(n,:))'.^2)) ;
NodesXY(n,1) = X + square_edge ;
temp_dis(8, :) = sqrt(sum((NodesXY - ones(Nodenum, 1)*NodesXY(n,:))'.^2)) ;
NodesXY(n,2) = Y + square_edge ;
temp_dis (9, :) = sqrt(sum((NodesXY - ones(Nodenum, 1)*NodesXY(n,:))'.^2)) ;
Nodes_dis = min(temp_dis) ; % toroidal distance
%
%********* ********calculate toroidal distance(ends)**********************
% Nodes_dis = sqrt(sum((NodesXY - ones(Nodenum, 1)*NodesXY(n,:))'.^2)) ; % Euclidian distance
con_to_n = find(Nodes_dis<=range) ; % store the nodes connected to node n
%******calculate the nodes that don't exist in cluster************
t = 1;
for i = 1: sum(con_to_n~=0)
if sum(cluster==con_to_n(i)) % don't exist
;
else
valid_to_n(t) = con_to_n(i) ;
t = t+1;
end
end % for i = 1: sum(con_to_n)
if t~=1
cluster_sum = cluster_sum + t-1;
cluster(cluster_down: cluster_sum) = valid_to_n(1: (t-1)) ;
end
if cluster_sum>=Nodenum
y = 1;
break
end
cluster_down = cluster_sum+1 ;
index = index +1;
if index >cluster_sum
break
end
end % while
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -