我有这个形式的数据集

    14     2    -1
    18     2    -1
    63    58    -1
    69    58    -1
   125   126    -1
   127   126    -1
   128   126    -1
   129   126    -1
   143   131    -1
   188   184    -1


我想定义一个矩阵C,它是MxM,由我的数据集中每个条目C[u,u] = C[v,v] = 1C[u,v] = C[v,u] = -1(u,v,-1)中的1组成,如何在matlab中做到这一点?矩阵C可能是稀疏的,因为M非常大,可能高达100万。

最佳答案

您可以使用A为数据设置稀疏矩阵,称为sparse

  M = 1e6; % given value
  A = [A; A(:, [2 1 3]); [1:M].' [1:M].' ones(M,1)];    %(u,v) = (v,u) = -1, and (u , u) = 1
  C = sparse(A(:,1),A(:,2),A(:,3),M,M);


在以上情况下:

A =
[14     2    -1
 18     2    -1
 63    58    -1
 69    58    -1
125   126    -1
127   126    -1
128   126    -1
129   126    -1
143   131    -1
188   184    -1];


我们将(i,i)添加到值为1的A中,然后根据这些值创建一个稀疏矩阵。

09-30 11:09