如何将稀疏矩阵的非零元素转储到非稀疏矩阵中
How to dump non-zero elements of a sparse matrix into a non-sparse matrix
我还可以询问如何将稀疏矩阵转储到 CSV 基本上我有一个表示为稀疏矩阵的图形,我想将图形导出到 CSV 以在 Gephi 中打开它。所以我的稀疏矩阵是这样的:
(23,35) 1
(35,78) 1
(78,23) 1
等等
我想将其转换成如下向量:
[23,35,1;35,78,1;78,23,1]
我很想知道有一个简单的单行代码可以做到这一点,但我无法让我的大脑找到它所以非常感谢您的帮助。
如果您也知道 sparse2csv('graph.csv',Adj)
会在文件中生成:
23,35,1
35,78,1
78,23,1
那也行。
想到的方法不是单行(虽然它可以很容易地通过一个函数变成一个),而是简单地使用两个函数调用:find
and nonzeros
:
A = sparse([23;35;78],[35;78;23],[1;1;1]);
[r,c] = find(A~=0);
v = nonzeros(A);
compact = [r,c,v];
disp(compact);
哪个return
78 23 1
23 35 1
35 78 1
正如 Luis Mendo 在评论中指出的那样,存在一个更简单的解决方案,因为 find
将 return 第三个输出参数中的非零值(给定的数组现在不再合乎逻辑):
[r,c,v] = find(A);
compact = [r,c,v];
我还可以询问如何将稀疏矩阵转储到 CSV 基本上我有一个表示为稀疏矩阵的图形,我想将图形导出到 CSV 以在 Gephi 中打开它。所以我的稀疏矩阵是这样的:
(23,35) 1
(35,78) 1
(78,23) 1
等等
我想将其转换成如下向量:
[23,35,1;35,78,1;78,23,1]
我很想知道有一个简单的单行代码可以做到这一点,但我无法让我的大脑找到它所以非常感谢您的帮助。
如果您也知道 sparse2csv('graph.csv',Adj)
会在文件中生成:
23,35,1
35,78,1
78,23,1
那也行。
想到的方法不是单行(虽然它可以很容易地通过一个函数变成一个),而是简单地使用两个函数调用:find
and nonzeros
:
A = sparse([23;35;78],[35;78;23],[1;1;1]);
[r,c] = find(A~=0);
v = nonzeros(A);
compact = [r,c,v];
disp(compact);
哪个return
78 23 1
23 35 1
35 78 1
正如 Luis Mendo 在评论中指出的那样,存在一个更简单的解决方案,因为 find
将 return 第三个输出参数中的非零值(给定的数组现在不再合乎逻辑):
[r,c,v] = find(A);
compact = [r,c,v];