给定 class 标签列表查找邻接矩阵
Find adjacency matrix given a list of class labels
我有一个属于相同 class 的项目列表 L
,L = [1 1 1 0 0 1 1]
我想使用列表 L
而不是构建邻接矩阵 'A'
使用任何 for 循环,
A = [1 1 1 0 0 0 0;
1 1 1 0 0 0 0;
1 1 1 0 0 0 0;
0 0 0 0 0 0 0
0 0 0 0 0 0 0;
0 0 0 0 0 1 1;
0 0 0 0 0 1 1; ]
你能帮忙吗?
谢谢!!
也许这就是你想要的:
A = zeros(numel(L));
A(logical(L),logical(L)) = 1;
您示例中的结果是
A =
1 1 1 0 0 1 1
1 1 1 0 0 1 1
1 1 1 0 0 1 1
0 0 0 0 0 0 0
0 0 0 0 0 0 0
1 1 1 0 0 1 1
1 1 1 0 0 1 1
更一般地说:假设您有 L = [1 1 1 0 0 2 2]
,其中每个数字表示不同的 class,零不算。在这种情况下
A = bsxfun(@eq,L,L.');
A(~L,~L) = 0;
这给出了
A =
1 1 1 0 0 0 0
1 1 1 0 0 0 0
1 1 1 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 1 1
0 0 0 0 0 1 1
我有一个属于相同 class 的项目列表 L
,L = [1 1 1 0 0 1 1]
我想使用列表 L
而不是构建邻接矩阵 'A'
使用任何 for 循环,
A = [1 1 1 0 0 0 0;
1 1 1 0 0 0 0;
1 1 1 0 0 0 0;
0 0 0 0 0 0 0
0 0 0 0 0 0 0;
0 0 0 0 0 1 1;
0 0 0 0 0 1 1; ]
你能帮忙吗?
谢谢!!
也许这就是你想要的:
A = zeros(numel(L));
A(logical(L),logical(L)) = 1;
您示例中的结果是
A =
1 1 1 0 0 1 1
1 1 1 0 0 1 1
1 1 1 0 0 1 1
0 0 0 0 0 0 0
0 0 0 0 0 0 0
1 1 1 0 0 1 1
1 1 1 0 0 1 1
更一般地说:假设您有 L = [1 1 1 0 0 2 2]
,其中每个数字表示不同的 class,零不算。在这种情况下
A = bsxfun(@eq,L,L.');
A(~L,~L) = 0;
这给出了
A =
1 1 1 0 0 0 0
1 1 1 0 0 0 0
1 1 1 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 1 1
0 0 0 0 0 1 1