2016-03-25 15 views
1

私が必要とするのは、まったく反対です。発生率マトリックスのグラフMatlab

I = incidence(G). 

ここで私はすでに入射行列Iを持っている、ノードとエッジを含むグラフであるGを取得する方法は、ありますか?

+0

原則として、これまでのところわかるはずです。あなたは、入射行列から隣接行列を得る方法を探すことができます。これまでに何を試しましたか?編集:または各エッジのソースノードとターゲットノードを「収集」します。 –

+0

いいえ、matlabメソッドのような直接的な方法があるかどうかを知りたかったのです。 – Hamidreza

答えて

3

私はMatlabの方法を見つけられませんでしたが、私は開発した以下の方法は非常に単純です:

ので、すべての作業が findとの情報で行われ
% 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'); 

I =発生率(G)はグラフGの疎行列を返します。もしs とtがj番目の辺のソースノードとターゲットノードのノードIDであるならば、I(s、j)= -1とI(t、 j)= 1である。すなわち、I の各列は、 Gの単一エッジのソースノードとターゲットノード

+0

それはあなたの親切な助けのために、私が望む正確なものを返します。 – Hamidreza

+0

@HamidrezaMirtaheri:聞いてよかったです。あなたが私の答えを投票してそれを受け入れるならば素晴らしいでしょう。http://stackoverflow.com/help/someone-answers –

関連する問題