22 lines
690 B
Matlab
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 |