我有一个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
答案 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
?就像现在一样,它将比桶列表中的元素数量多一个。