0

digraphの場合、数値ノード IDとして正でない整数を使用したいと考えています。 例えば;

A = [-1  1  3];
B = [ 3  2  0];
plot(addedge(digraph, A , B))

これを実行すると、次のように表示されます。

digraph/addge>validateNodeIDs の使用エラー (155 行目)

数値ノード ID は正の整数でなければなりません。

4

1 に答える 1

0

ただし、digraphノード ID を非正数にすることはできませんが、これは良い機能ではないと思いますが、次のプログラミング方法を使用して動作させました:-

有向グラフを作成する行列は次のとおりです。

A = [-1  1  3];
B = [ 3  2  0];

digraphのドキュメント、つまりに従ってアプローチを使用する代わりに、plot(addedge(digraph, A , B))代わりに次のコードを使用します。

ax=plot(addedge(digraph,(-min([A,B])+1)*ones(size(A))+A,(-min([A,B])+1)*ones(size(B))+B)); 
ax.NodeLabel=strsplit(num2str(min([A,B]):max([A,B])),' ');

このコードは、負、ゼロ、または正のすべての整数 NodeID に対して機能します。

使い方:-

ここで使用した戦略は、ノードの最小値が 1 になるようにノードの値を操作することです。そして、ダイグラフが作成されると、ノードの値を再度操作して実際の値を表示します。

手順:-

  1. min([A,B])行列Aとの最小値を見つけBます。
  2. で乗算し-1、結果を で加算し+1ます。すなわち-min([A,B])+1。したがって、上記の例では、 の最小値として を[A,B]乗算-1し、を加算して を-1与え+1ます。1+2
  3. 次に、結果を で乗算しones(size(A))て、 と同じサイズのすべて同じ数の行列を取得しAます。したがって、上記の例では、の結果(-min([A,B])+1)*ones(size(A))[2 2 2]

  4. 結果が元の行列に追加され、A[A,B] の最小値が に等しくなり1ます。

  5. 同じ操作が行列 B で行われます。
  6. 操作されたノード ID を使用して最終的に有向グラフが作成されると、その ID は次を使用して修正されます。つまり、 の最小値から最大値までax.NodeLabel=strsplit(num2str(min([A,B]):max([A,B])),' '); の数値の配列がを使用して生成され、それが を使用して文字列に変換され、結果の文字列が に変換されます。ノード ラベルを設定するための要件である cell 配列。[A,B][A,B]min([A,B]):max([A,B])num2str

出力:-

出力

于 2016-07-04T20:29:49.560 に答える