digraphの場合、数値ノード IDとして正でない整数を使用したいと考えています。 例えば;
A = [-1 1 3];
B = [ 3 2 0];
plot(addedge(digraph, A , B))
これを実行すると、次のように表示されます。
digraph/addge>validateNodeIDs の使用エラー (155 行目)
数値ノード ID は正の整数でなければなりません。
ただし、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 になるようにノードの値を操作することです。そして、ダイグラフが作成されると、ノードの値を再度操作して実際の値を表示します。
手順:-
min([A,B])
行列A
との最小値を見つけB
ます。-1
、結果を で加算し+1
ます。すなわち-min([A,B])+1
。したがって、上記の例では、 の最小値として を[A,B]
乗算-1
し、を加算して を-1
与え+1
ます。1
+2
次に、結果を で乗算しones(size(A))
て、 と同じサイズのすべて同じ数の行列を取得しA
ます。したがって、上記の例では、の結果(-min([A,B])+1)*ones(size(A))
は[2 2 2]
結果が元の行列に追加され、A
[A,B] の最小値が に等しくなり1
ます。
ax.NodeLabel=strsplit(num2str(min([A,B]):max([A,B])),' ');
の数値の配列がを使用して生成され、それが を使用して文字列に変換され、結果の文字列が に変換されます。ノード ラベルを設定するための要件である cell 配列。[A,B]
[A,B]
min([A,B]):max([A,B])
num2str