MATLAB Answers

Marie
0

Weighted matrix to edge list

Marie
さんによって質問されました 2017 年 11 月 17 日
最新アクティビティ Marie
さんによって コメントされました 2017 年 11 月 17 日
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.

  0 件のコメント

サインイン to comment.

タグ

1 件の回答

Stephen Cobeldick
回答者: Stephen Cobeldick
2017 年 11 月 17 日
編集済み: Stephen Cobeldick
2017 年 11 月 17 日
 採用された回答

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 件のコメント

Marie
2017 年 11 月 17 日
Thanks a lot! This is very helpful.

サインイン to comment.



Translated by