Create a Graph from a matrix
36 次查看(过去 30 天)
显示 更早的评论
I have the following matrix A[10,6]
ans =
1 1 0 0 0 1
1 1 1 1 0 0
1 1 1 1 0 0
1 0 0 0 1 1
1 1 0 0 0 0
0 1 1 1 0 1
1 0 0 1 0 1
0 1 1 1 1 1
0 1 1 1 1 1
1 1 1 0 1 1
I want to create a directed graph from that matrix, My graph will contain one node for each column and one node for every two lines (so a total of 11 nodes). if possible distinguish between them.
For the edges , I have two cases :
- An edge from a column node to a line node is added for all the 1 in the first line of the node in the matrix.
- An edge from the line node to a column node is added for all the 1 in the second line of the node in the matrix.
I made some research in the graph section of the documentation but couldn't get it done .
Thanks
0 个评论
采纳的回答
alice
2017-6-21
To get a directed graph, you should use digraph function. In order to do so, you have to build a standard square adjacency matrix describing how your nodes are connected. This is one way to do it (choosing to put the column nodes first in the adjacency matrix):
nNodeCol = size(A,2); % one node for each column of A
nNodeLine = size(A,1)/2; % one node for every two lines of A
% First the column nodes, then the line nodes:
nodeNames = [cellstr(strcat('column', num2str((1:size(A,2))'))) ; cellstr(strcat('line', num2str((1:size(A,1)/2)')))];
% Adjacency matrix adj, adj(i,j)=1 means there is an edge from node#i to node#j:
adj = zeros(nNodeCol+nNodeLine); % square matrix which size is the number of nodes
adj(1:nNodeCol, nNodeCol+1:end) = A(1:2:end,:)'; % edge from a column node to a line node is added for all the 1 in the first line of the node in the matrix
adj(nNodeCol+1:end, 1:nNodeCol) = A(2:2:end,:); % edge from the line node to a column node is added for all the 1 in the second line of the node in the matrix
% Here is your graph:
G = digraph(adj,nodeNames);
plot(G);
3 个评论
alice
2017-6-23
The names are in the cell nodeNames.
To get the node names from a graph G, you can simply use G.Nodes .
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Graph and Network Algorithms 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!