1

そのため、隣接行列を作成しようとしていますが、 と の違いについて混乱していaccumarray(matrix+1,1)ますaccumarray(matrix,1)

やった:

matrix = [ 1 3 
           4 2 
           1 3 
           3 1]

adMatrix1 = accumarray(matrix,1);
adMatrix1=adMatrix1~=0; 
adMatrix1 = [0 0 1  
             0 0 0  
             1 0 0  
             0 1 0]

その後:

adMatrix2 = accumarray(matrix+1,1); 
adMatrix2=adMatrix2~=0;
adMatrix2 = [0 0 0 0 
             0 0 0 1
             0 0 0 0 
             0 1 0 0 
             0 0 1 0]

「matrix+1」では余分な行とゼロの列があることは知っていますが、なぜそのようにするのか理解できません。調べたところ、この投稿によると、「matrix + 1」を使用する必要があり、そのために得た最良の説明は、「matlab のインデックス作成は 1 から始まるため」というものでした。

まったくわかりません...隣接行列を作成しようとした場合、どの方法が正しいですか? どんな助けでも大歓迎です、ありがとう!

4

2 に答える 2

3

ノード ID のインデックスが 0 の場合は +1 が必要ですが、それ以外の場合は必要ありません。質問する必要があるのは、ノード ID のインデックスが 0 か 1 かということです。

于 2015-05-19T20:46:41.203 に答える