Daniel@0: function [edge_id, nedges] = assignEdgeNums(adj_mat) Daniel@0: % give each edge a unique number Daniel@0: % we number (i,j) for j>i first, in row, column order. Daniel@0: % Then we number the reverse links Daniel@0: Daniel@0: nnodes = length(adj_mat); Daniel@0: edge_id = zeros(nnodes); Daniel@0: e = 1; Daniel@0: for i=1:nnodes Daniel@0: for j=i+1:nnodes Daniel@0: if adj_mat(i,j) Daniel@0: edge_id(i,j) = e; Daniel@0: e = e+1; Daniel@0: end Daniel@0: end Daniel@0: end Daniel@0: Daniel@0: nedges = e-1; Daniel@0: tmp = edge_id; Daniel@0: ndx = find(tmp); Daniel@0: tmp(ndx) = tmp(ndx)+nedges; Daniel@0: edge_id = edge_id + triu(tmp)'; Daniel@0: Daniel@0: Daniel@0: if 0 Daniel@0: ndx = find(adj_mat); Daniel@0: nedges = length(ndx); Daniel@0: nnodes = length(adj_mat); Daniel@0: edge_id = zeros(1, nnodes*nnodes); Daniel@0: edge_id(ndx) = 1:nedges; Daniel@0: edge_id = reshape(edge_id, nnodes, nnodes); Daniel@0: end