0001 function Gd = sledgeset(G, uv)
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033 gi = slgraphinfo(G);
0034
0035 if nargin < 2 || isempty(uv)
0036 uv = 'auto';
0037 end
0038
0039
0040
0041
0042
0043
0044
0045
0046 switch uv
0047 case 'auto'
0048 if gi.valued
0049 sch = 3;
0050 else
0051 sch = 0;
0052 end
0053 case 'on'
0054 if gi.valued
0055 sch = 3;
0056 else
0057 sch = 1;
0058 end
0059 case 'off'
0060 if gi.valued
0061 sch = 2;
0062 else
0063 sch = 0;
0064 end
0065 otherwise
0066 error('sltoolbox:invalidarg', ...
0067 'Invalid using-value scheme: %s', uv);
0068 end
0069
0070
0071
0072 switch gi.type
0073 case 'ge'
0074 Gd = struct('n', gi.n);
0075 case 'bi'
0076 Gd = struct('n', gi.n, 'nt', gi.nt);
0077 end
0078
0079 switch gi.form
0080 case 'edgeset'
0081 switch sch
0082 case {0, 3}
0083 Gd.edges = G.edges;
0084
0085 case 1
0086 if ~isempty(G.edges)
0087 vals = ones(size(G.edges, 1), 1);
0088 Gd.edges = [G.edges, vals];
0089 else
0090 Gd.edges = [];
0091 end
0092 case 2
0093 if ~isempty(G.edges)
0094 Gd.edges = G.edges(:, 1:2);
0095 else
0096 Gd.edges = [];
0097 end
0098 end
0099
0100 case 'adjlist'
0101 Gd.edges = sladjlist2edgeset(G.targets, sch);
0102
0103 case 'adjmat'
0104 switch sch
0105 case {0, 2}
0106 [I, J] = find(G);
0107 Gd.edges = [I, J];
0108 case 1
0109 [I, J] = find(G);
0110 ne = length(I);
0111 Gd.edges = [I, J, ones(ne, 1)];
0112 case 3
0113 [I, J, V] = find(G);
0114 Gd.edges = [I, J, V];
0115 end
0116 end
0117
0118