繁体   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