sortrows graph edges .

10 visualizaciones (últimos 30 días)
Rub Ron
Rub Ron el 6 de Jun. de 2020
Comentada: Christine Tobler el 8 de En. de 2021
I have a graphs G. The G.Edges has 300 elements. I would like to sort the edges of my graph based on a given index (of size 300x1). I tried:
G.Edges = sortrows(G.Edges,index);
but it gives me an error:
Error using tabular/sortrows (line 57)
Variable index exceeds table dimensions.
I also tried to sort it based in the weight of the edges, but it does not work either.
G.Edges = sortrows(G.Edges,'Weight','ascend');
Any help will be appreciatted.
  2 comentarios
darova
darova el 15 de Jun. de 2020
what does it mean?
Rub Ron
Rub Ron el 15 de Jun. de 2020
@darova index is the new position sof the edges. Considering the inital position (as listed) of the edges were: [1 2 3 4 ... 300]

Iniciar sesión para comentar.

Respuestas (2)

Christine Tobler
Christine Tobler el 15 de Jun. de 2020
Editada: Christine Tobler el 15 de Jun. de 2020
The variable G.Edges.EndNodes of a graph can't be modified, it is always sorted by the nodes in the graph. This is so that the presentation is standardized, meaning that two graphs that have the same nodes and edges will present as the same.
You can save the sorted edges table into another variable, though:
weightSortedEdges = sortrows(g.Edges, 'Weight')
if this index is captured as the weight of each edge, or based on the index variable:
[~, ind] = sort(index);
indexSortedEdges = g.Edges(ind, :);
  7 comentarios
KIN WONG
KIN WONG el 7 de En. de 2021
@Steven Lord
I encountered the same issue. Based on a little bit of testing, it appears to me that the graph constructor uses command "sortrows" to preprocess the Edges table.
Since this is a crucial aspect needed to maintain correspondence between edge index and additional edge-associated data, could this fact be (1) made official and permanent, and (2) documented on the MATLAB help page?
Namely:
Please consider accepting this documentation change request. Thank you.
Christine Tobler
Christine Tobler el 8 de En. de 2021
I've passed this information along, thank you for the detailed comments. A note on "Compatibility Considerations" - we only use these when a behavior has changed, which isn't the case here since the Edges table has always been sorted and will stay so in the future.

Iniciar sesión para comentar.


Walter Roberson
Walter Roberson el 15 de Jun. de 2020
The second parameter to sortrows() being applied to a table, must be either 'rownames' or indications of the variables to sort on. A numeric vector can be given, in which case the entries represent variable numbers -- which would be 1 to the width of the Edges table, not to the height of the Edges table.
If you want the edges table to be in a particular order, then
G.Edges = G.Edges(index,:);
  1 comentario
Rub Ron
Rub Ron el 19 de Jul. de 2020
Hi, unfortunately in my case G is not a table, it is a graph. So, this does not work for me.

Iniciar sesión para comentar.

Categorías

Más información sobre Graph and Network Algorithms en Help Center y File Exchange.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by