从4x6矩阵创建邻接矩阵

时间:2018-08-28 14:25:33

标签: matlab adjacency-matrix

我有一个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中获得此矩阵?

1 个答案:

答案 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输入矩阵(在这种情况下,最后一行也不再需要)。