我有一个4x6矩阵(定向网络),类似于以下示例:所以第一列代表个人,每一行代表与其他人的个人友谊,因此第一行代表个人1与2和5的友谊并且第3行代表个人5与个人2和6的友谊。零没有意义。
$ export LC_ALL=en_US.UTF-8
$ export LANG=en_US.UTF-8
所以现在有四个人,我要**表示友谊的4x4邻接矩阵,表示0表示没有友谊,而1表示友谊**。因此,以下第一行代表个人1友谊,其中2,5为1,表示他们是朋友,而6中的0为他们不是朋友。同样,第二行代表友谊个人2,其中1,5和6为1,表示他/她是所有个人的朋友。
[ 1 2 0 5 0 0;
2 1 0 0 5 6;
5 2 6 0 0 0;
6 1 2 0 0 5; ]
那么如何在MATLAB中获得此矩阵?
答案 0 :(得分:2)
最直接的方法是修改找到的here答案:
A = [1 2 0 5 0 0;
2 1 0 0 5 6;
5 2 6 0 0 0;
6 1 2 0 0 5];
adjMat = zeros(max(A(:))); % create full 6x6 matrix, then chop it down
for ind = 1:size(A,1)
% Flag 1 on each row 'ind' at the indices mentioned in col 2-5
adjMat(A(ind,1), nonzeros(A(ind,2:end))) = 1;
end
% use only rows/columns with indices in first column of A
adjMat = adjMat(A(:,1), A(:,1));
如果事实证明您要使用完整的6x6矩阵,则在最后一行之前停下,或在不需要的行中使用零为零的6x6输入矩阵(在这种情况下,最后一行也不再需要)。