FormationControlSimulation/SOURCE/networks-toolbox/str2adj.m

37 lines
1.1 KiB
Matlab

% Convert a string graph representation to an adjacency matrix
% (see also adj2str.m)
%
% INPUTs: string graph representation: .i1.j1.k1,.i2.j2.k2,....
% OUTPUTs: adjacency matrix, nxn, n - number of nodes
%
% Note 1: Valid for a general graph.
% Note 2: This is the reverse routine for adj2str.m.
% Note 3: The string nomenclature is arbitrarily chosen.
%
% GB: last updated, Sep 25, 2012
function adj = str2adj(str)
commas=find(str==',');
n=length(commas); % number of nodes
adj=zeros(n); % initialize adjacency matrix
if commas(1)>1
% Extract the neighbors of the first node only
neigh=str(1:commas(1)-1);
dots=find(neigh=='.');
for d=1:length(dots)-1; adj(1,str2num(neigh(dots(d)+1:dots(d+1)-1)))=1; end
adj(1,str2num(neigh(dots(length(dots))+1:length(neigh))))=1;
end
% Extract the neighbors of the remaining 2:n nodes
for i=2:n
neigh=str(commas(i-1)+1:commas(i)-1);
if isempty(neigh); continue; end
dots=find(neigh=='.');
for d=1:length(dots)-1; adj(i,str2num(neigh(dots(d)+1:dots(d+1)-1)))=1; end
adj(i,str2num(neigh(dots(length(dots))+1:length(neigh))))=1;
end