【问题标题】:Filtering an adjacency matrix in matlab在matlab中过滤邻接矩阵
【发布时间】:2014-07-15 11:34:38
【问题描述】:

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

【问题讨论】:

  • 这是一个有效的代码吗?它是否给出了您想要的结果?什么是桶?计数器的目的是什么?
  • 基本上我想存储从graph4矩阵中删除后的索引。

标签: matlab adjacency-matrix


【解决方案1】:

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

【讨论】:

  • 是的,我希望两列都低于 7。
猜你喜欢
  • 1970-01-01
  • 2011-03-17
  • 1970-01-01
  • 1970-01-01
  • 2015-07-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多