簡體   English   中英

matlab-Accumarray鄰接矩陣混淆?

[英]matlab - Accumarray Adjacency Matrix Confusion?

所以我試圖創建一個鄰接矩陣,而我對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]

我知道使用“矩陣+1”時,會有額外的零行和零列,但是我不明白為什么您會那樣做。 當我查找它時,根據這篇文章,我應該使用“ matrix + 1”,對此我最好的解釋是“因為在matlab中索引從1開始”。

我一點都不明白...如果我試圖創建一個鄰接矩陣,哪種方法正確? 任何幫助將不勝感激,謝謝!

如果您的節點ID索引為0,則需要+1,否則不需要。 因此,您需要問的問題是,您的節點ID是0索引還是1索引?

您的矩陣接受多個鏈接嗎? 如果是,則上面的accumarray兩個結果都不正確,因為節點1和3連接了兩次。

順便說一句,您可以考慮sparsefull

full(sparse(matrix(:,1), matrix(:,2), ones(1, size(matrix, 1))))

ans =

 0     0     2
 0     0     0
 1     0     0
 0     1     0

ones(1, size(matrix, 1))實際上是一個權重向量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM