我有这个形式的数据集
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] = 1
的C[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
中,然后根据这些值创建一个稀疏矩阵。