稀疏矩阵的多重分配

时间:2018-06-21 14:19:05

标签: matlab sparse-matrix

我在MATLAB中有一个稀疏矩阵,其维度为:8970240 x 8970240 = L x L。我们称之为M

例如,给定一对索引ijM(i, j) = 1,我必须为矩阵中的许多元素分配1的值。

我有要在矢量中执行分配的索引,这是:

  • 一个维向量V1存储行索引(i)。
  • 一个维向量V2存储列索引(j)。

现在,问题在于V1的长度(7004160)与V2的长度(6389760)不同。还会在我的稀疏矩阵中返回很多非零元素,总共7004160 x 6389760 = 44754901401600 = A个非零元素。

我试图用这种方式构造M

M = sparse(V1, V2, ones(A), L, L)

但这不起作用...

有人知道如何解决吗?

1 个答案:

答案 0 :(得分:1)

这可能不是最有效的方法,但是您可以通过构建包含整个索引对列表的新向量来实现。

W1 = repmat(V1,length(V2),1); %repeat whole vector
W2 = repelem(V2,length(V1)); %repeat each element so it matches with each V1 element

W1,W2替换为V1,V2的M表达式

如果您不必只存储稀疏格式的M,

M = zeros(L);
M(V1,V2) = 1;

将给出相同的矩阵。 (正如@AnderBiguri所说,在这种情况下,这实际上可能会使用更少的内存

相关问题