繁体   English   中英

在Matlab中过滤邻接矩阵

[英]Filtering an adjacency matrix in matlab

我有一个nx3邻接矩阵,其中包含前两个维度中的节点和第三个维度中的对应权重。 我想为特定阈值过滤矩阵(用于节点索引)。 例如,我要保留小于10.000、20.000等节点的邻接矩阵。在matlab中,哪种方法最有效? 我尝试执行以下操作,找到与节点对应的索引:

counter = 1;
for i=1: size(graph4, 1)
   if (graph4(i,1) >30000) | (graph4(i,2) >30000)
      bucket(counter) = i;
      counter=counter+1;
   end
end

假设邻接矩阵为A ,如下所示:

A =    
    8    1    6
    3    5    7
    4    9    2
   11    4    9
    6    8   10
    7   12    5
   17   10   15
   12   14   16
   13   18   11

如果你想同时列1和列2到小于的值,你可以这样做:

value = 10;
T = A(A(:,1) < value & A(:,2) < value, :)
T =    
    8    1    6
    3    5    7
    4    9    2
    6    8   10

以下代码行给出的结果与示例代码相同(但看起来不符合您的描述)。

value = 10000;
bucket = find((A(:,1)>value) | A(:,2)>value)

我猜您犯了一个错误,想在循环之前增加计数器,并将其初始化为counter = 0 现在,它将比存储桶列表中的元素数量多一。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM