[英]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.