⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 is_connected_boolean.m

📁 无线ADHOC网络中
💻 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 + -