2016-05-01 29 views

回答

0

雖然digraph不允許節點ID爲不積極,我認爲這,是不是一個很好的功能,但我做了它的工作使用以下編程的方法: -

矩陣爲我們希望使有向圖是:

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

現在,而不是使用方法根據digraph's documentationplot(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])),' '); 

此代碼適用於每個整數節點ID,無論是負值,零還是正值。

它是如何工作: -

我這裏使用的是操作節點值的策略,使節點的最小值爲1。與有向圖是由時,節點值再次操作顯示實際那些。

步驟: -

  1. min([A,B])查找矩陣AB的最小值。
  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最小值。當最後向圖與操縱節點ID由

  5. 相同操作可使用矩陣B進行查閱
  6. ,其ID是使用校正:ax.NodeLabel=strsplit(num2str(min([A,B]):max([A,B])),' '); 即使用min([A,B]):max([A,B])生成從最小值[A,B]到最大值[A,B]的數字陣列,然後使用num2str,resulting string is then converted into a cell array將其轉換爲字符串,這是設置節點標籤的要求。

輸出: -

Output

相關問題