我有一个列表L
列出同一类的项目,L = [1 1 1 0 0 1 1]
我想构建邻接矩阵' A'使用列表L
而不是
使用任何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; ]
你能帮忙吗?
谢谢!
答案 0 :(得分: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]
,其中每个数字表示不同的类,并且零不计数。在这种情况下
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