FormationControlSimulation/SOURCE/networks-toolbox/addEdgeWeights.m

22 lines
690 B
Matlab

% Add multiple edges in an edge list
%
% INPUTS: original (non-compact) edge list
% OUTPUTS: final compact edge list (no row repetitions)
%
% Example: [1 2 2; 2 2 1; 4 5 1] -> [1 2 3; 4 5 1]
% GB: last updated, Sep 25 2012
function elc=addEdgeWeights(el)
el2=[el(:,1), el(:,2)]; % make the edge list searchable w/o the weights
visited=[]; % mark visited edges
elc=[];
for e=1:size(el,1)
if sum(ismember(visited,el2(e,:),'rows'))==0 % if not visited yet
ind=ismember(el2,el2(e,:),'rows');
ind=find(ind==1); % these are all the ocurrences of el(e,:)
elc=[elc; el(e,1), el(e,2), sum(el(ind,3))];
visited=[visited; el2(e,:)];
end
end