我需要的是完全相反的;
I = incidence(G).
这里我已经有一个关联矩阵I
,有没有办法获得G
,这是一个包含节点和边的图?
答案 0 :(得分:3)
我没有找到Matlab方法,但我开发的以下方法非常简单:
% Define your test graph
s = [1 1 1 2 3 3];
t = [2 3 4 3 4 5];
G = graph(s,t);
I = incidence(G);
% Find the source nodes from incidence matrix
[s2,~] = find( I == -1 )
% Find the target nodes from incidence matrix
[t2,~] = find( I == 1 )
% Generate graph from source and target nodes
G2 = graph( s2, t2 );
figure;
subplot(211);
plot( G );
subplot(212);
plot( G2 );
% Check
I2 = incidence(G2);
assert( isequal(I, I2), 'Did not generate same incidence matrices' );
所有工作都是使用find
和信息:
I =入射(G)返回图G的稀疏关联矩阵。如果s 和t是第j个边缘的源节点和目标节点的节点ID 在G中,然后I(s,j)= -1并且I(t,j)= 1.也就是说,I的每一列 表示G中单个边的源节点和目标节点。