在matlab中过滤邻接矩阵

时间:2014-07-15 11:34:39

标签: matlab adjacency-matrix

我有一个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

1 个答案:

答案 0 :(得分:2)

假设邻接矩阵为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?就像现在一样,它将比桶列表中的元素数量多一个。