Weighted matrix to edge list

1 view (last 30 days)
Marie
Marie on 17 Nov 2017
Commented: Marie on 17 Nov 2017
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.

Accepted Answer

Stephen23
Stephen23 on 17 Nov 2017
Edited: Stephen23 on 17 Nov 2017
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.
  1 Comment
Marie
Marie on 17 Nov 2017
Thanks a lot! This is very helpful.

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!