将邻接矩阵转换为 MATLAB 中的特定边列表

Convert adjacency matrix to specific edge list in MATLAB

如果我有矩阵

  1 0 0  
  0 0 1 
  0 0 0 

我想在 MATLAB 中使用这种形式

1 2 3  1 2 3  1 2 3
1 1 1  2 2 2  3 3 3
1 0 0  0 0 0  0 1 0

我还想要结果中第三行的值。即 ans= [1 0 0 0 0 0 0 1 0]

给你 -

[X,Y] = ndgrid(1:size(A,1),1:size(A,2));
out = [X(:).' ; Y(:).' ; A(:).']

对于问题的最后一部分,请使用 out 的最后一行:out(end,:)A(:).'

样本运行-

>> A
A =
     1     0     0
     0     0     1
     0     0     0
>> [X,Y] = ndgrid(1:size(A,1),1:size(A,2));
>> out = [X(:).' ; Y(:).' ; A(:).']
out =
     1     2     3     1     2     3     1     2     3
     1     1     1     2     2     2     3     3     3
     1     0     0     0     0     0     0     1     0