Weighted matrix to edge list

Hello,
Is there a quick way to transform a matrix such as
[10 1 9; 1 5 4; 2 1 5]
into an edge list with the information containing both i and j (also when i=j) and the value of the pair. For example
[1 1 10; 1 2 1; 1 3 9; 2 1 1; 2 2 5; 2 3 4; 3 1 2; 3 2 1; 3 3 5].
Thanks in advance for any help.

 Respuesta aceptada

Stephen23
Stephen23 el 17 de Nov. de 2017
Editada: Stephen23 el 17 de Nov. de 2017

0 votos

One way based around ndgrid:
>> M = [10 1 9; 1 5 4; 2 1 5];
>> N = M.';
>> S = size(N);
>> [R,C] = ndgrid(1:S(1),1:S(2));
>> [C(:),R(:),N(:)]
ans =
1 1 10
1 2 1
1 3 9
2 1 1
2 2 5
2 3 4
3 1 2
3 2 1
3 3 5
If the order is not important then you do not need the transpose. Note that in MATLAB the first dimension is down the columns.

Más respuestas (0)

Categorías

Más información sobre Creating and Concatenating Matrices en Centro de ayuda y File Exchange.

Etiquetas

Preguntada:

el 17 de Nov. de 2017

Comentada:

el 17 de Nov. de 2017

Community Treasure Hunt

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

Start Hunting!

Translated by