从满矩阵转换为稀疏矩阵

3

我有一张图的相邻权重矩阵。我想调用MatlabBGL库的贝尔曼-福特算法。如何将该矩阵转换为稀疏格式?


1
也许可以在它上面调用sparse函数? - oleksii
如果您发现问题的答案很有用(请看到那里是否有勾选符号),请接受它们,同时使用投票。这将有助于您获得更多的答案。 - Rishabh
1个回答

4

将完整矩阵转换为稀疏存储,可以使用只带有一个参数的sparse函数。

S = sparse(A)

例如
A = [ 0   0   0   5
      0   2   0   0
      1   3   0   0
      0   0   4   0];
S = sparse(A)

产生

S =

   (3,1)        1
   (2,2)        2
   (3,2)        3
   (4,3)        4
   (1,4)        5

打印输出列出了S的非零元素,以及它们的行和列索引。这些元素按列排序,反映了内部数据结构。
如果矩阵的大小不太大,您可以使用full函数将稀疏矩阵转换为完整存储。例如,A = full(S)可以反转示例转换。
将完整矩阵转换为稀疏存储不是生成稀疏矩阵最常见的方式。如果矩阵的大小足够小,可以使用完整存储,那么转换为稀疏存储很少提供显著的节省。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接